home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 23 / CU Amiga - Super CD-ROM 23 (June 1998).iso / CreatingGames / Utilities / Asm / AB3DIIsrc / source_4000 / multiCONTROLLOOP.s < prev    next >
Encoding:
Text File  |  1996-07-29  |  58.1 KB  |  3,097 lines

  1. ; Main control loop.
  2. ; This is the very outer loop of the program.
  3.  
  4. ; What needs to be done and when?
  5.  
  6. ; Black screen start.
  7. ; Load title music
  8. ; Load title screen
  9. ; Fade up title screen
  10. ; Select options
  11. ; Play game.
  12.  
  13. ; Playing the game involves allocating screen and
  14. ; level memory, loading the level, loading the
  15. ; samples, loading the wall graphics, playing the
  16. ; level, deallocating the screen memory....
  17.  
  18. ; Control part should therefore:
  19.  
  20. ; 1. Load Title Music
  21. ; 2. Load title screen
  22. ; 3. Fade up title screen.
  23. ; 4. Add 'loading' message
  24. ; 5. Load samples and walls
  25. ; 6: LOOP START
  26. ; 7. Option select screens
  27. ; 8. Free music mem, allocate level mem.
  28. ; 9. Load level
  29. ;10. Play level with options selected
  30. ;11. Reload title music
  31. ;12. Reload title screen
  32. ;13. goto 6
  33.  
  34. INTROTUNEADDR: dc.l 0
  35. INTROTUNENAME: dc.b 'ab3:sounds/abreed3d.med',0
  36.  even
  37. TITLESCRNADDR: dc.l 0
  38. TITLESCRNNAME: dc.b 'TKG1:includes/titlescrnraw1',0
  39.  even
  40. TITLESCRNNAME2: dc.b 'TKG2:includes/titlescrnraw1',0
  41.  even
  42. OPTSPRADDR: dc.l 0
  43. TITLESCRNPTR: dc.l 0
  44.  
  45.  
  46.  
  47. ProtValA: dc.l 0
  48. ProtValB: dc.l 0
  49. ProtValC: dc.l 0
  50. ProtValD: dc.l 0
  51. ProtValE: dc.l 0
  52. ProtValF: dc.l 0
  53. ProtValG: dc.l 0
  54. ProtValH: dc.l 0
  55. ProtValI: dc.l 0
  56. ProtValJ: dc.l 0
  57. ProtValK: dc.l 0
  58. ProtValL: dc.l 0
  59. ProtValM: dc.l 0
  60. ProtValN: dc.l 0
  61.  
  62. MASTERPLAYERONEHEALTH:
  63.   dc.w 0
  64.   dc.w 0
  65. MASTERPLAYERONEAMMO:
  66.  ds.w 20
  67.  
  68. MASTERPLAYERONESHIELD:
  69.  dc.w 0
  70.  dc.w 0
  71. MASTERPLAYERONEGUNS:
  72.  dcb.w 10,0
  73.  
  74. MASTERPLAYERTWOHEALTH:
  75.   dc.w 0
  76.   dc.w 0
  77. MASTERPLAYERTWOAMMO:
  78.  ds.w 20
  79.  
  80. MASTERPLAYERTWOSHIELD:
  81.  dc.w 0
  82.  dc.w 0
  83. MASTERPLAYERTWOGUNS:
  84.  dcb.w 10,0
  85.  
  86. KVALTOASC:
  87.         Dc.b    " `  "," 1  "," 2  "," 3  "
  88.         dc.b    " 4  "," 5  "," 6  "," 7  "
  89.         dc.b    " 8  "," 9  "
  90. ; 10
  91.         Dc.b    " 0  "," -  "," +  "," \  "
  92.         dc.b     '    ','    '," Q  "," W  "
  93.         dc.b    " E  "," R  "
  94. ; 20
  95.         Dc.b    " T  "," Y  "," U  "," I  "
  96.         dc.b    " O  "," P  "," [  "," ]  "
  97.         dc.b    '    ','KP1 '
  98. ; 30
  99.         Dc.b    'KP2 ','KP3 '," A  "," S  "
  100.         dc.b    " D  "," F  "," G  "," H  "
  101.         dc.b    " J  "," K  "
  102. ;40
  103.         Dc.b    " L  "," ;  "," #  ",'    '
  104.         dc.b    '    ','KP4 ','KP5 ','KP6 '
  105.         dc.b    '    '," Z  "
  106. ;50
  107.         Dc.b    " X  "," C  "," V  "," B  "
  108.         dc.b    " N  "," M  "," ,  "," .  "
  109.         dc.b     " /  ",'    '
  110. ;60
  111.         Dc.b    '    ','KP7 ','KP8 ','KP9 '
  112.         dc.b    'SPC ','<-- ','TAB ','ENT '
  113.         dc.b    'RTN ','ESC '
  114. ;70
  115.         Dc.b    'DEL ','    ','    ','    '
  116.         dc.b    'KP- ','    ','UCK ','DCK '
  117.         dc.b    'RCK ','LCK '
  118. ;80
  119.         Dc.b    'FK1 ','FK2 ','FK3 ','FK4 '
  120.         dc.b    'FK5 ','FK6 ','FK7 ','FK8 '
  121.         dc.b    'FK9 ','FK0 '
  122. ;90
  123.         Dc.b    'KP( ','KP) ','KP/ ','KP* '
  124.         dc.b    'KP+ ','HLP ','LSH ','RSH '
  125.         dc.b    'CPL ','CTL '
  126. ;100
  127.         Dc.b    'LAL ','RAL ','LAM ','RAM '
  128.         dc.b    '    ','    ','    ','    '
  129.         dc.b    '    ','    '
  130.         Dc.b    '    ','    ','    ','    '
  131.         dc.b    '    ','    ','    ','    '
  132.         dc.b    '    ','    '
  133.  
  134.  even
  135.  
  136. FINISHEDLEVEL: dc.w 0
  137.  
  138. _IntuitionBase: dc.l 0
  139. _GfxBase: dc.l 0
  140. MyScreen: dc.l 0
  141.  
  142. MyNewScreen    dc.w    0,0        left, top
  143.         dc.w    320,16        width, height
  144.         dc.w    1        depth
  145.         dc.b    0,1        pens
  146.         dc.w    0        viewmodes
  147.         dc.w    CUSTOMSCREEN+SCREENQUIET    type
  148.         dc.l    0        font
  149.         dc.l    0    title
  150.         dc.l    0        gadgets
  151.         dc.l    0        bitmap
  152.  
  153.  
  154. INTUITION_REV    equ    31        v1.1
  155. int_name    INTNAME
  156.  even
  157.  
  158. START:
  159.  
  160.  move.b #'n',mors  
  161.  
  162. ************************************88
  163. * TAKE OUT WHEN PLAYING MODULE AGAIN
  164. ********************************
  165. ProtChkBLev1:
  166.     PRSDF
  167.     PRSDE
  168. ************************************
  169.  
  170. ; move.l #PROTCALLENC,a0
  171. ; move.l #(ENDPROT-PROTCALLENC)/4-1,d1
  172. ; move.l #$75055345,d0
  173. ;codeitup:
  174. ; sub.l d0,(a0)+
  175. ; ror.l #1,d0
  176. ; dbra d1,codeitup
  177. ; rts
  178.  
  179. ProtChkCLev1:
  180.  PRSDA
  181.  
  182.  move.w #$7201,titleplanes
  183.  
  184.  move.l 4.w,a6
  185.  move.l #doslibname,a1
  186.  moveq #0,d0
  187.  jsr -552(a6)
  188.  move.l d0,doslib
  189.  
  190.     moveq    #INTUITION_REV,d0    version
  191.     lea    int_name(pc),a1
  192.     CALLEXEC OpenLibrary
  193.     tst.l    d0
  194. ;    beq    exit_false        if failed then quit
  195.     move.l    d0,_IntuitionBase    else save the pointer
  196.  
  197.     lea    MyNewScreen(pc),a0
  198.     
  199.     CALLINT    OpenScreen        open a screen
  200.     tst.l    d0
  201. ;    beq    exit_closeall        if failed the close both, exit
  202.     move.l    d0,MyScreen
  203.  
  204.     CALLINT RethinkDisplay
  205.  
  206.  move.l #LINKname,a0
  207.  jsr LOADAFILE
  208.  move.l d0,LINKFILE
  209.  
  210.  move.l #LEVELTEXTNAME,a0
  211.  jsr LOADAFILE
  212.  move.l d0,LEVELTEXT
  213.  
  214.  jsr stuff
  215.  
  216.  move.l gfxbase,a6
  217.  jsr _LVOOwnBlitter(a6)
  218.  
  219.  move.l 4.w,a6
  220.  lea BLITInt,a1
  221.  moveq #6,d0
  222.  jsr _LVOSetIntVector(a6)
  223.  move.l d0,SYSTEMBLITINT
  224.  
  225. ; move.l doslib,a6
  226. ; move.l #LINKname,d1
  227. ; move.l #1005,d2
  228. ; jsr -30(a6)
  229. ; move.l d0,LLhandle
  230. ;
  231. ; move.l doslib,a6
  232. ; move.l d0,d1
  233. ; move.l #LINKSPACE,d2
  234. ; move.l #90000,d3
  235. ; jsr -42(a6)
  236. ;
  237. ; move.l doslib,a6
  238. ; move.l LLhandle,d1
  239. ; jsr -36(a6)
  240.  
  241.  
  242.  PRSDS
  243.  
  244.  jsr _InitLowLevel
  245.  
  246. ; jsr CLEARTITLEPAL
  247.  
  248. ProtChkDLev1:
  249.  PRSDT
  250.  
  251.  move.w #$20,$dff1dc
  252.  move.l #titlecop,$dff080
  253.  PRSDV
  254.  move.w #$87c0,$dff000+dmacon
  255.  move.w #$8020,$dff000+dmacon
  256. ProtChkMLev1:
  257.  move.w $dff006,d0
  258.  lea RVAL2-100(pc),a0
  259.  add.w d0,100(a0)
  260.  
  261. ; bsr GETTITLEMEM
  262. ProtChkELev1:
  263.  PRSDU
  264. ; bsr CLROPTSCRN
  265.  
  266. ; bsr SETUPTITLESCRN
  267.  
  268. ; jsr _InitPlayer
  269.  
  270. ; move.l #INTROTUNENAME,a0
  271. ; jsr _LoadModule
  272. ; move.l d0,INTROTUNEADDR
  273.  PRSDY
  274. ; move.l d0,a0
  275. ; jsr _InitModule
  276.  
  277. ; move.l INTROTUNEADDR,a0
  278. ; jsr _PlayModule
  279. ProtChkFLev1:
  280.  PRSDa
  281. ; move.l #TITLESCRNNAME,TITLESCRNPTR
  282. ; bsr LOADTITLESCRN2
  283.  
  284. ; FLASHER $0f0,$fff
  285.  
  286. ******************************
  287.  jsr mnu_copycredz
  288.  jsr mnu_setscreen
  289.  move.l a7,mnu_mainstack
  290.  jsr mnu_viewcredz
  291.  
  292.  jsr mnu_clearscreen
  293.  
  294.  WBSLOW
  295.  WBSLOW
  296.  
  297.  move.l 4.w,a6
  298.  move.l SYSTEMBLITINT,a1
  299.  moveq #6,d0
  300.  jsr _LVOSetIntVector(a6)
  301.  
  302.  move.l gfxbase,a6
  303.  jsr _LVODisownBlitter(a6)
  304.  
  305.  move.w #$83f0,$dff096
  306.  
  307. ******************************
  308.  
  309.  
  310. **********************************************
  311.  jsr INITQUEUE
  312. **********************************************
  313.  
  314.  move.w #0,FADEVAL
  315.  move.w #31,FADEAMOUNT
  316.  bsr FADEUPTITLE
  317.  PRSDB
  318.  jsr LOAD_SFX
  319.  jsr LOADWALLS
  320.  jsr LOADFLOOR
  321.  jsr LOADOBS
  322.  PRSDZ
  323.  
  324.  
  325.  move.l #backpicname,a0
  326.  move.l #BackPicture,d0
  327.  move.l #0,d1
  328.  jsr QUEUEFILE
  329.  
  330. ; IFNE CD32VER
  331.  PRSDD
  332. ; ENDC
  333.  
  334. ; jsr _StopPlayer
  335.  PRSDW
  336.  PRSDX
  337. ; jsr _RemPlayer
  338.  
  339.  
  340. ***********************************************
  341.  jsr FLUSHQUEUE
  342. ***********************************************
  343.  
  344.  jsr PATCHSFX
  345.  
  346.  move.w #23,FADEAMOUNT
  347.  bsr FADEDOWNTITLE 
  348.  
  349. ; bsr ASKFORDISK
  350.  
  351.  IFNE CD32VER
  352.  move.l doslib,a6
  353.  move.l #115,d1
  354.  jsr -198(a6)
  355.  ENDC
  356.  
  357. ; move.l #newblag,$80
  358. ; trap #0
  359. ; bra JUMPPASTIT
  360. ; rts
  361. ;
  362. ;newblag:
  363.  
  364.  
  365. ProtChkGLev1:
  366. ; bsr PROTSETUP
  367.  bsr DEFAULTGAME
  368.  
  369. ; move.l INTROTUNEADDR,a0
  370. ; jsr _UnLoadModule
  371.  
  372. ; IFEQ CD32VER
  373. ; jsr KInt_Init
  374. ; ENDC
  375. ProtChkHLev1:
  376. ; rte
  377. ;
  378. ;JUMPPASTIT:
  379.  
  380.  jsr mnu_GETBLITINT
  381.  jsr mnu_setscreen
  382.  
  383. ; jsr mnu_protection
  384.  
  385.  
  386. BACKTOMENU:
  387.  
  388.  jsr CLEARKEYBOARD
  389.  
  390.  
  391.  cmp.b #'s',mors
  392.  beq.s BACKTOSLAVE
  393.  cmp.b #'m',mors
  394.  beq.s BACKTOMASTER
  395.  bsr READMAINMENU
  396.  bra DONEMENU
  397. BACKTOMASTER:
  398.  bsr MASTERMENU
  399.  bra DONEMENU
  400. BACKTOSLAVE:
  401.  bsr SLAVEMENU
  402. DONEMENU:
  403.  
  404.  jsr mnu_clearscreen
  405.  jsr mnu_DROPBLITINT
  406.  move.w #$83f0,$dff096
  407.  
  408.  bsr WAITREL
  409.  
  410. ; IFEQ CD32VER
  411. ; move.l OLDKINT,$68.w
  412. ; ENDC
  413.  
  414.  
  415.  
  416.  
  417. ; bsr CLRSPRITES
  418.  
  419. ; move.w #23,FADEAMOUNT
  420. ; bsr FADEUPTITLE
  421. ; move.w #31,FADEAMOUNT
  422.  bsr FADEDOWNTITLE
  423.  
  424.  move.w #$0201,titleplanes
  425.  
  426.     FILTER
  427.     
  428.  tst.b SHOULDQUIT
  429.  bne QUITTT
  430.  
  431. ; bsr RELEASETITLEMEM
  432.  
  433.   
  434. ; jsr LOADBOTPIC
  435.  
  436.   
  437.  clr.b FINISHEDLEVEL
  438.  
  439.  move.w #0,PLR1s_angpos
  440.  move.w #0,PLR2s_angpos
  441.  move.w #0,PLR1_angpos
  442.  move.w #0,PLR2_angpos
  443.  move.b #0,PLR1_GunSelected
  444.  move.b #0,PLR2_GunSelected
  445.  
  446. **************************8
  447.  clr.b NASTY
  448. *************************** 
  449.  
  450.  move.l #MASTERPLAYERONEHEALTH,a0
  451.  move.l #MASTERPLAYERONESHIELD,a1
  452.  move.l #PLAYERONEHEALTH,a2
  453.  move.l #PLAYERONESHIELD,a3
  454.  move.l #PLAYERTWOHEALTH,a4
  455.  move.l #PLAYERTWOSHIELD,a5
  456.  
  457.  REPT 11 
  458.  move.l (a0),(a2)+
  459.  move.l (a0)+,(a4)+
  460.  ENDR
  461.  
  462.  REPT 6 
  463.  move.l (a1),(a3)+
  464.  move.l (a1)+,(a5)+
  465.  ENDR
  466.  
  467. *************************************
  468.  jsr INITQUEUE
  469.  
  470.  move.l #MEMF_CHIP,d1
  471.  move.l #10240*8,d0
  472.  move.l 4.w,a6
  473.  jsr -198(a6)
  474.  move.l d0,scrn
  475.  
  476.  move.l #MEMF_CHIP,d1
  477.  move.l #10240*8,d0
  478.  move.l 4.w,a6
  479.  jsr -198(a6)
  480.  move.l d0,scrn2
  481.  
  482.     move.l    #borderpacked,d0
  483.     moveq    #0,d1
  484.     move.l  scrn,a0
  485.     lea    WorkSpace,a1
  486.     lea    $0,a2
  487.     jsr    unLHA
  488.  
  489.     move.l    #borderpacked,d0
  490.     moveq    #0,d1
  491.     move.l  scrn2,a0
  492.     lea    WorkSpace,a1
  493.     lea    $0,a2
  494.     jsr    unLHA
  495.  
  496. ; move.l #MEMF_CHIP,TYPEOFMEM
  497. ; move.l #bordername,a0
  498. ; move.l #scrn,d0
  499. ; move.l #0,d1
  500. ; jsr QUEUEFILE
  501. ; ifeq CHEESEY
  502. ; move.l #bordername,a0
  503. ; move.l #scrn2,d0
  504. ; move.l #0,d1
  505. ; jsr QUEUEFILE
  506. ; endc 
  507. ; jsr FLUSHQUEUE
  508.  
  509.  ifne CHEESEY
  510.  
  511.  move.l scrn,scrn2
  512.  
  513.  endc
  514.  
  515. ************************************* 
  516.  
  517.     jsr PLAYTHEGAME
  518.     
  519. *************************************
  520.  move.l scrn,a1
  521.  move.l #10240*8,d0
  522.  move.l 4.w,a6
  523.  jsr -210(a6)
  524.  ifeq CHEESEY
  525.  move.l scrn2,a1
  526.  move.l #10240*8,d0
  527.  move.l 4.w,a6
  528.  jsr -210(a6)
  529.  endc
  530. *************************************
  531.  
  532. ; bsr FREEBOTMEM 
  533.  
  534. ; bra QUITTT
  535.  
  536.  tst.b FINISHEDLEVEL
  537.  beq dontusestats
  538.  
  539.  move.l #MASTERPLAYERONEHEALTH,a0
  540.  move.l #MASTERPLAYERONESHIELD,a1
  541.  move.l #PLAYERONEHEALTH,a2
  542.  move.l #PLAYERONESHIELD,a3
  543.  
  544.  REPT 11 
  545.  move.l (a2)+,(a0)+
  546.  ENDR
  547.  
  548.  REPT 6 
  549.  move.l (a3)+,(a1)+
  550.  ENDR
  551.  
  552. dontusestats:
  553.  
  554. ; bsr PASSLINETOGAME
  555. ; bsr GETSTATS
  556.  
  557. ; bsr GETTITLEMEM
  558. ; bsr CLROPTSCRN
  559. ; bsr SETUPTITLESCRN
  560.  
  561. ; move.l #TITLESCRNNAME2,TITLESCRNPTR
  562. ; bsr LOADTITLESCRN2
  563. ; move.w #$7201,titleplanes
  564.  
  565. ; move.w #$20,$dff1dc
  566. ; move.l #titlecop,$dff080
  567. ; move.w #$87c0,$dff000+dmacon
  568. ; move.w #$8020,$dff000+dmacon 
  569.  
  570. ; move.w #0,FADEVAL
  571. ; move.w #31,FADEAMOUNT
  572. ; bsr FADEUPTITLE
  573.  
  574. ; move.w #23,FADEAMOUNT
  575. ; bsr FADEDOWNTITLE 
  576.  
  577. ; IFEQ CD32VER
  578. ; jsr KInt_Init
  579. ; ENDC
  580.  
  581.  jsr mnu_GETBLITINT
  582.  jsr mnu_setscreen
  583.  
  584.  
  585.  bra BACKTOMENU
  586.  
  587. QUITTT:
  588.  
  589.  move.l LEVELDATA,d1
  590.  move.l d1,a1
  591.  move.l #120000,d0
  592.  move.l 4.w,a6
  593.  jsr -210(a6)
  594.  
  595.  move.l TEXTSCRN,d1
  596.  move.l d1,a1
  597.  move.l #10240*2,d0
  598.  move.l 4.w,a6
  599.  jsr -210(a6)
  600.  
  601.  move.l FASTBUFFER,d1    
  602.  move.l #2*320*256,d0
  603.  move.l 4.w,a6
  604.  jsr -210(a6)
  605.  
  606. ; jsr RELEASEWALLMEM
  607.  jsr RELEASESAMPMEM
  608.  jsr RELEASEFLOORMEM
  609.  jsr RELEASEOBJMEM
  610.   
  611.  move.l old,$dff080
  612.  move.l 4.w,a6
  613.  lea VBLANKInt,a1
  614.  moveq #INTB_COPER,d0
  615.  jsr _LVORemIntServer(a6)
  616.  
  617.  move.l 4.w,a6
  618.  lea KEYInt,a1
  619.  moveq #INTB_PORTS,d0
  620.  jsr _LVORemIntServer(a6)
  621.  
  622.  move.w #$f8e,$dff1dc
  623.  
  624.  move.l old,$dff080
  625.  move.w _storeint,d0
  626.  or.w d0,$dff000+intena
  627.  
  628. ; move.l    4.w,a6
  629. ; jsr    _LVOPermit(a6)
  630.  
  631.  
  632.  move.l #0,d0
  633.  
  634.  rts
  635.  
  636. SSTACK: dc.l 0
  637.  
  638. backpicname: dc.b "tkg1:includes/rawbackpacked"
  639.   dc.b 0
  640.  
  641. bordername: dc.b "TKG2:includes/newborderRAW",0
  642.  even
  643. borderpacked: incbin "ab3:includes/newborderPACKED"
  644.  
  645. ; KEY OPTIONS:
  646. CONTROLBUFFER:
  647. turn_left_key:
  648.  dc.b $4f
  649. turn_right_key:
  650.  dc.b $4e
  651. forward_key:
  652.  dc.b $4c
  653. backward_key:
  654.  dc.b $4d
  655. fire_key:
  656.  dc.b $65
  657. operate_key:
  658.  dc.b $40
  659. run_key:
  660.  dc.b $61
  661. force_sidestep_key:
  662.  dc.b $67
  663. sidestep_left_key:
  664.  dc.b $39
  665. sidestep_right_key:
  666.  dc.b $3a
  667. duck_key:
  668.  dc.b $22
  669. look_behind_key:
  670.  dc.b $28
  671. jump_key:
  672.  dc.b $f
  673. look_up_key:
  674.  dc.b 27
  675. look_down_key:
  676.  dc.b 42
  677. centre_view_key:
  678.  dc.b 41
  679. next_weapon_key:
  680.  dc.b 68
  681.  
  682. templeftkey: dc.b 0
  683. temprightkey: dc.b 0
  684. tempslkey: dc.b 0 
  685. tempsrkey: dc.b 0
  686.  
  687.  even 
  688.  
  689. GETSTATS:
  690. ; CHANGE PASSWORD INTO RAW DATA
  691.  
  692.  rts
  693.  
  694.  
  695. SETPLAYERS:
  696.  
  697.  move.w PLOPT,d0
  698.  add.b #'a',d0
  699.  move.b d0,LEVA
  700.  move.b d0,LEVB
  701.  move.b d0,LEVC
  702.  move.b d0,LEVD
  703.  move.b d0,LEVE
  704.  
  705.  clr.b NASTY
  706.  
  707.  cmp.b #'2',WHICHAMI
  708.  blt.s PLAYER1setup
  709.  beq.s PLAYER2setup
  710.  bgt PLAYER3setup
  711.  
  712.  rts
  713.  
  714. PLAYER1setup:
  715.  move.w PLOPT,d0
  716.  move.w #$f,backc
  717.  jsr SENDFIRST
  718.  move.w #$f0,backc
  719.  
  720.  move.w Rand1,d0
  721.  jsr SENDFIRST
  722.  move.w #$f0f,backc 
  723.  rts
  724.  
  725. SHOVELEV macro
  726.  move.w PLOPT,d0
  727.  add.b #'a',d0
  728.  move.b d0,LEVA
  729.  move.b d0,LEVB
  730.  move.b d0,LEVC
  731.  move.b d0,LEVD
  732.  move.b d0,LEVE 
  733.  endm
  734.  
  735. PLAYER2setup:
  736.  
  737.  cmp.b #'2',HOWMANY
  738.  beq.s .Imlast 
  739.  
  740.  move.w #$f,backc
  741.  jsr RECFIRST
  742.  move.w d0,PLOPT
  743.  move.w #$f0,backc
  744.  
  745.  jsr SENDPAR
  746.  move.w #$f0f,backc
  747.  
  748.  jsr RECFIRST
  749.  move.w #$ff0,backc
  750.  move.w d0,Rand1
  751.  jsr SENDPAR
  752.  move.w #$fff,backc
  753.  
  754.  SHOVELEV
  755.  
  756.  rts
  757.  
  758. .Imlast:
  759.  jsr RECFIRST
  760.  move.w d0,PLOPT
  761.  jsr RECFIRST
  762.  move.w d0,Rand1
  763.  
  764.  SHOVELEV
  765.  
  766.  rts
  767.  
  768. PLAYER3setup:
  769.  
  770.  cmp.b #'3',HOWMANY
  771.  beq.s .Imlast
  772.  
  773.  jsr RECPAR
  774.  move.w d0,PLOPT
  775.  jsr SENDFIRST
  776.  
  777.  jsr RECPAR
  778.  move.w d0,Rand1
  779.  jsr SENDFIRST
  780.  
  781.  SHOVELEV
  782.  
  783. .Imlast
  784.  
  785.  jsr RECPAR
  786.  move.w d0,PLOPT
  787.  
  788.  jsr RECPAR
  789.  move.w d0,Rand1
  790.  
  791.  SHOVELEV
  792.  
  793.  rts
  794.  
  795.  cmp.b #'s',mors
  796.  beq SLAVESETUP
  797.  cmp.b #'m',mors
  798.  beq MASTERSETUP
  799.  st NASTY
  800. onepla:
  801.  rts
  802.  
  803. NASTY: dc.w 0
  804.  
  805. MASTERSETUP:
  806.  clr.b NASTY
  807.  move.w PLOPT,d0
  808.  jsr SENDFIRST
  809.  
  810.  move.w Rand1,d0
  811.  jsr SENDFIRST
  812.  
  813.  bsr TWOPLAYER
  814.  rts
  815.  
  816. SLAVESETUP:
  817.  CLR.B NASTY
  818.  jsr RECFIRST
  819.  move.w d0,PLOPT
  820.  add.b #'a',d0
  821.  move.b d0,LEVA
  822.  move.b d0,LEVB
  823.  move.b d0,LEVC
  824.  move.b d0,LEVD
  825.  move.b d0,LEVE
  826.  
  827.  jsr RECFIRST
  828.  move.w d0,Rand1
  829.  bsr TWOPLAYER
  830.  
  831.  
  832.  rts
  833.      
  834. ********************************************************
  835.  
  836. ASKFORDISK:
  837.  lea RVAL1+300(pc),a0
  838.  lea RVAL2+900(pc),a1
  839.  PRSDD
  840.  move.w #10,OptScrn
  841.  bsr DRAWOPTSCRN
  842.  
  843. ProtChkNLev1:
  844. .wtrel:
  845.  btst #7,$bfe001
  846.  beq.s .wtrel
  847.  
  848. wtclick:
  849.  add.w #$235,-300(a0)
  850.  add.w #$4533,-900(a0)
  851.  btst #6,$bfe001
  852.  bne.s wtclick
  853.  
  854.  rts
  855.  
  856. CLRSPRITES: 
  857.  move.l #nullspr,d0
  858.  move.w d0,tsp0l
  859.  move.w d0,tsp1l
  860.  move.w d0,tsp2l
  861.  move.w d0,tsp3l
  862.  move.w d0,tsp4l
  863.  move.w d0,tsp5l
  864.  move.w d0,tsp6l
  865.  move.w d0,tsp7l
  866.  swap d0
  867.  move.w d0,tsp0h
  868.  move.w d0,tsp1h
  869.  move.w d0,tsp2h
  870.  move.w d0,tsp3h
  871.  move.w d0,tsp4h
  872.  move.w d0,tsp5h
  873.  move.w d0,tsp6h
  874.  move.w d0,tsp7h 
  875.  rts
  876.  
  877. ********************************************************
  878.  
  879. READMAINMENU:
  880.  
  881.  move.b #'n',mors
  882.  
  883.  move.w MAXLEVEL,d0
  884.  
  885.  
  886.  move.l #mnu_CURRENTLEVELLINE,a1
  887.  muls #40,d0
  888.  move.l LINKFILE,a0
  889.  add.l #LevelName,a0
  890.  add.l d0,a0
  891.  bsr PUTINLINE
  892.  
  893. ; Stay here until 'play game' is selected.
  894.  
  895. ; move.w #0,OptScrn
  896. ; bsr DRAWOPTSCRN
  897. ; move.w #0,OPTNUM
  898.  
  899.  lea mnu_MYMAINMENU,a0
  900.  bsr MYOPENMENU
  901.  
  902. .rdlop:
  903.  lea mnu_MYMAINMENU,a0
  904.  bsr CHECKMENU
  905.  
  906. ; tst.w d0
  907. ; blt.s .rdlop
  908.  
  909. ; tst.w d0
  910. ; bne.s .nonextlev
  911. ; move.w LEVELSELECTED,d0
  912. ; add.w #1,d0
  913. ; cmp.w MAXLEVEL,d0
  914. ; blt .nowrap
  915. ; moveq #0,d0
  916. ;.nowrap:
  917. ; and.w #$f,d0
  918. ; move.w d0,LEVELSELECTED
  919. ; move.l #CURRENTLEVELLINE,a1
  920. ; muls #40,d0
  921. ; move.l #LEVEL_OPTS,a0
  922. ; add.l d0,a0
  923. ; bsr PUTINLINE
  924. ; bsr JUSTDRAWIT
  925. ; bra .rdlop
  926.  
  927. .nonextlev:
  928.  
  929.  cmp.w #1,d0
  930.  bne .noopt
  931.  
  932.  bra MASTERMENU
  933.  
  934. .noopt:
  935.  
  936. ; cmp.w #5,d0
  937. ; bne.s .noqui
  938. ; st SHOULDQUIT
  939. ; bra playgame
  940. ;.noqui
  941.  
  942.  cmp.w #2,d0
  943.  beq playgame
  944.  
  945.  cmp.w #3,d0
  946.  bne .nocontrol
  947.  
  948.  bsr CHANGECONTROLS
  949.  
  950. ; move.w #0,OptScrn
  951. ; bsr DRAWOPTSCRN
  952. ; move.w #0,OPTNUM
  953.  
  954.  lea mnu_MYMAINMENU,a0
  955.  bsr MYOPENMENU
  956.  
  957.  bsr WAITREL
  958.  bra .rdlop
  959.  
  960. .nocontrol:
  961.  
  962. ********************************
  963.  
  964.  cmp.w #4,d0
  965.  bne .nocred
  966. ; bsr SHOWCREDITS
  967. ; move.w #0,OptScrn
  968. ; bsr DRAWOPTSCRN
  969. ; move.w #1,OPTNUM
  970. ;
  971. ; bsr HIGHLIGHT
  972. ;
  973. ; bsr WAITREL
  974. ; bra .rdlop
  975.  
  976.  jsr mnu_viewcredz
  977.  lea mnu_MYMAINMENU,a0
  978.  bsr MYOPENMENU
  979.  
  980.  bra .rdlop
  981.  
  982. ********************************
  983.  
  984. .nocred:
  985.  
  986.  cmp.w #5,d0
  987.  bne .noload
  988.  
  989.  jsr LOADPOSITION
  990.  
  991. ; move.w #0,OptScrn
  992. ; bsr DRAWOPTSCRN
  993. ; move.w #1,OPTNUM
  994.  
  995.  lea mnu_MYMAINMENU,a0
  996.  bsr MYOPENMENU
  997.  
  998.  bsr WAITREL
  999.  bra .rdlop
  1000.  
  1001. .noload:
  1002.  cmp.w #6,d0
  1003.  bne playgame
  1004.  bsr WAITREL
  1005.  
  1006.  jsr SAVEPOSITION
  1007.  
  1008. ; move.w #0,OptScrn
  1009. ; bsr DRAWOPTSCRN
  1010. ; move.w #1,OPTNUM
  1011. ;
  1012. ; bsr HIGHLIGHT
  1013.  
  1014.  lea mnu_MYMAINMENU,a0
  1015.  bsr MYOPENMENU
  1016.  
  1017.  bsr WAITREL
  1018.  bra .rdlop
  1019.  
  1020.  
  1021. ;
  1022. ; move.l #PASSWORDLINE+12,a0
  1023. ; moveq #15,d2
  1024. ;.clrline:
  1025. ; move.b #32,(a0)+
  1026. ; dbra d2,.clrline 
  1027. ; move.w #0,OptScrn
  1028. ; bsr DRAWOPTSCRN
  1029. ;
  1030. ; IFEQ CD32VER
  1031. ; clr.b lastpressed
  1032. ; move.l #PASSWORDLINE+12,a0
  1033. ; move.w #0,d1
  1034. ;.ENTERPASS:
  1035. ; tst.b lastpressed
  1036. ; beq .ENTERPASS
  1037. ; move.b lastpressed,d2
  1038. ; move.b #0,lastpressed
  1039. ; move.l #KVALTOASC,a1
  1040. ; cmp.l #'<-- ',(a1,d2.w*4)
  1041. ; bne .nodel
  1042. ;
  1043. ; tst.b d1
  1044. ; beq .nodel
  1045. ;
  1046. ; subq #1,d1
  1047. ; move.b #32,-(a0)
  1048. ; movem.l d0-d7/a0-a6,-(a7)
  1049. ; bsr JUSTDRAWIT
  1050. ; movem.l (a7)+,d0-d7/a0-a6
  1051. ; bra .ENTERPASS
  1052. ;
  1053. ;.nodel:
  1054. ; cmp.l #'RTN ',(a1,d2.w*4)
  1055. ; beq .FORGETIT
  1056. ; cmp.l #'ESC ',(a1,d2.w*4)
  1057. ; beq .FORGETIT
  1058. ; move.b 1(a1,d2.w*4),d2
  1059. ; cmp.b #65,d2
  1060. ; blt .ENTERPASS
  1061. ; cmp.b #'Z',d2
  1062. ; bgt .ENTERPASS
  1063. ; move.b d2,(a0)+
  1064. ; move.w #0,OptScrn
  1065. ; movem.l d0-d7/a0-a6,-(a7)
  1066. ; bsr JUSTDRAWIT
  1067. ; movem.l (a7)+,d0-d7/a0-a6
  1068. ; add.w #1,d1
  1069. ; cmp.w #16,d1
  1070. ; blt .ENTERPASS
  1071. ;
  1072. ; ENDC
  1073. ; IFNE CD32VER
  1074. ; move.l #PASSWORDLINE+12,a0
  1075. ; move.w #15,d0
  1076. ;.ENTERPASS:
  1077. ; bsr GETACHAR
  1078. ; dbra d0,.ENTERPASS
  1079. ; ENDC
  1080. ;
  1081. ; bsr PASSLINETOGAME
  1082. ; tst.w d0
  1083. ; bne .FORGETIT
  1084. ; bsr GETSTATS
  1085. ; move.w MAXLEVEL,d0
  1086. ; move.l #CURRENTLEVELLINE,a1
  1087. ; muls #40,d0
  1088. ; move.l #LEVEL_OPTS,a0
  1089. ; add.l d0,a0
  1090. ; bsr PUTINLINE
  1091. ;
  1092. ;.FORGETIT:
  1093. ; bsr WAITREL
  1094. ; bsr CALCPASSWORD
  1095. ;
  1096. ; move.w #0,OptScrn
  1097. ; bsr DRAWOPTSCRN
  1098. ;
  1099. ; move.w #1,OPTNUM
  1100. ;
  1101. ; bsr HIGHLIGHT
  1102. ;
  1103. ; bra .rdlop 
  1104.  
  1105. playgame:
  1106.  move.w MAXLEVEL,PLOPT
  1107.  rts
  1108.  
  1109. SHOULDQUIT: dc.w 0
  1110.  
  1111. LEVELSELECTED:
  1112.  dc.w 0
  1113.  
  1114.  IFNE CD32VER
  1115. GETACHAR:
  1116.  moveq #0,d7
  1117.  move.b #'A',(a0)
  1118.  movem.l d0-d7/a0-a6,-(a7)
  1119.  jsr JUSTDRAWIT
  1120.  movem.l (a7)+,d0-d7/a0-a6
  1121.  
  1122. .wtnum:
  1123.  btst #1,$dff00c
  1124.  sne d1
  1125.  btst #1,$dff00d
  1126.  sne d2
  1127.  btst #0,$dff00c
  1128.  sne d3
  1129.  btst #0,$dff00d
  1130.  sne d4
  1131.  
  1132.  eor.b d1,d3
  1133.  eor.b d2,d4
  1134.  
  1135.  tst.b d1
  1136.  beq.s .NODELETE
  1137.  cmp.w #15,d0
  1138.  beq.s .NODELETE
  1139.  move.b #32,(a0)
  1140.  subq #1,a0
  1141.  addq #1,d0
  1142.  move.b (a0),d7
  1143.  sub.b #'A',d7
  1144.  movem.l d0-d7/a0-a6,-(a7)
  1145.  jsr JUSTDRAWIT
  1146.  movem.l (a7)+,d0-d7/a0-a6
  1147.  jsr WAITFORNOPRESS
  1148.  bra .wtnum
  1149. .NODELETE
  1150.  
  1151.  tst.b d4
  1152.  bne.s .PREVNUM
  1153.  tst.b d3
  1154.  bne.s .NEXTNUM
  1155.  btst #7,$bfe001
  1156.  bne.s .wtnum
  1157.  addq #1,a0
  1158.  jsr WAITFORNOPRESS
  1159.  rts
  1160.  
  1161. .PREVNUM:
  1162.  subq #1,d7
  1163.  bge.s .nonegg
  1164.  moveq #15,d7
  1165. .nonegg:
  1166.  move.b d7,d1
  1167.  add.b #'A',d1
  1168.  move.b d1,(a0)
  1169.  movem.l d0-d7/a0-a6,-(a7)
  1170.  jsr JUSTDRAWIT
  1171.  movem.l (a7)+,d0-d7/a0-a6
  1172.  
  1173.  jsr WAITFORNOPRESS
  1174.  
  1175.  bra .wtnum
  1176.  
  1177. .NEXTNUM:
  1178.  addq #1,d7
  1179.  cmp.w #15,d7
  1180.  ble.s .nobigg
  1181.  moveq #0,d7
  1182. .nobigg:
  1183.  move.b d7,d1
  1184.  add.b #'A',d1
  1185.  move.b d1,(a0)
  1186.  movem.l d0-d7/a0-a6,-(a7)
  1187.  jsr JUSTDRAWIT
  1188.  movem.l (a7)+,d0-d7/a0-a6
  1189.  jsr WAITFORNOPRESS
  1190.  bra .wtnum
  1191.  rts
  1192.  ENDC
  1193.  
  1194.  
  1195. MASTERMENU:
  1196.  
  1197.  move.b #'m',mors
  1198.  
  1199.  move.w #0,LEVELSELECTED
  1200.  
  1201.  move.w #0,d0 
  1202.  move.l #mnu_CURRENTLEVELLINEM,a1
  1203.  muls #40,d0
  1204.  move.l LINKFILE,a0
  1205.  add.l #LevelName,a0
  1206.  add.l d0,a0
  1207.  bsr PUTINLINE
  1208.  
  1209. ; Stay here until 'play game' is selected.
  1210.  
  1211. ; move.w #4,OptScrn
  1212. ; bsr DRAWOPTSCRN
  1213. ; move.w #1,OPTNUM
  1214.  
  1215. ; bsr HIGHLIGHT
  1216. ; bsr WAITREL
  1217.  
  1218.  lea mnu_MYMASTERMENU,a0
  1219.  bsr MYOPENMENU
  1220.  
  1221. .rdlop:
  1222.  lea mnu_MYMASTERMENU,a0
  1223.  bsr CHECKMENU
  1224. ; tst.w d0
  1225. ; blt.s .rdlop
  1226. ; bsr WAITREL
  1227.  
  1228.  
  1229.  
  1230.  cmp.w #1,d0
  1231.  bne.s .nonextlev
  1232.  
  1233.  move.w LEVELSELECTED,d0
  1234.  add.w #1,d0
  1235.  cmp.w MAXLEVEL,d0
  1236.  blt .nowrap
  1237.  moveq #0,d0
  1238. .nowrap:
  1239. ; and.w #$f,d0
  1240.  move.w d0,LEVELSELECTED
  1241.  move.l #mnu_CURRENTLEVELLINEM,a1
  1242.  muls #40,d0
  1243.  move.l LINKFILE,a0
  1244.  add.l #LevelName,a0
  1245.  add.l d0,a0
  1246.  bsr PUTINLINE
  1247.  
  1248.  lea mnu_MYMASTERMENU,a0
  1249.  jsr mnu_redraw
  1250.  
  1251.  bra .rdlop
  1252.  
  1253. .nonextlev:
  1254.  
  1255.  cmp.w #2,d0
  1256.  beq .playgame
  1257.  
  1258.  cmp.w #0,d0
  1259.  bne .noopt
  1260.  
  1261.  bra SLAVEMENU
  1262.  
  1263. .noopt:
  1264.  
  1265.  cmp.w #3,d0
  1266.  bne .nocontrol
  1267.  
  1268.  bsr CHANGECONTROLS
  1269.  
  1270. ; move.w #4,OptScrn
  1271. ; bsr DRAWOPTSCRN
  1272. ; move.w #0,OPTNUM
  1273. ;
  1274. ; bsr HIGHLIGHT
  1275. ;
  1276. ; bsr WAITREL
  1277.  
  1278.  lea mnu_MYMASTERMENU,a0
  1279.  bsr MYOPENMENU
  1280.  
  1281.  bra .rdlop
  1282.  
  1283. .nocontrol:
  1284.  
  1285. .playgame
  1286.  
  1287.  move.w LEVELSELECTED,PLOPT
  1288.  rts
  1289.  
  1290. SLAVEMENU:
  1291.  
  1292.  move.b #'s',mors
  1293.  
  1294. ; Stay here until 'play game' is selected.
  1295.  
  1296.  lea mnu_MYSLAVEMENU,a0
  1297.  bsr MYOPENMENU
  1298.  
  1299. ; move.w #5,OptScrn
  1300. ; bsr DRAWOPTSCRN
  1301. ; move.w #1,OPTNUM
  1302. ;
  1303. ; bsr HIGHLIGHT
  1304. ;
  1305. ; bsr WAITREL
  1306. .rdlop:
  1307.  lea mnu_MYSLAVEMENU,a0
  1308.  bsr CHECKMENU
  1309.  tst.w d0
  1310.  blt.s .rdlop
  1311.  bsr WAITREL
  1312.  
  1313.  cmp.w #1,d0
  1314.  beq .playgame
  1315.  
  1316.  cmp.w #0,d0
  1317.  bne .noopt
  1318.  
  1319.  bra READMAINMENU
  1320.  
  1321. .noopt:
  1322.  
  1323.  cmp.w #2,d0
  1324.  bne .nocontrol
  1325.  
  1326.  bsr CHANGECONTROLS
  1327.  
  1328. ; move.w #5,OptScrn
  1329. ; bsr DRAWOPTSCRN
  1330. ; move.w #0,OPTNUM
  1331. ;
  1332. ; bsr HIGHLIGHT
  1333. ;
  1334. ; bsr WAITREL
  1335.  
  1336.  lea mnu_MYSLAVEMENU,a0
  1337.  bsr MYOPENMENU
  1338.  
  1339.  
  1340.  bra .rdlop
  1341.  
  1342. .nocontrol:
  1343. .playgame:
  1344.  
  1345.  rts
  1346.  
  1347. STATBACK: ds.w 34
  1348.  
  1349. TWOPLAYER:
  1350.  
  1351.  move.w #200,PLAYERONEHEALTH
  1352.  move.w #200,PLAYERTWOHEALTH
  1353.  
  1354.  move.w #0,PLAYERONEFUEL
  1355.  
  1356.  st.b PLAYERONEGUNS+1
  1357.  st.b PLAYERONEGUNS+3
  1358.  st.b PLAYERONEGUNS+5
  1359.  st.b PLAYERONEGUNS+7
  1360.  st.b PLAYERONEGUNS+9
  1361.  st.b PLAYERONEGUNS+11
  1362.  st.b PLAYERONEGUNS+13
  1363.  st.b PLAYERONEGUNS+15
  1364.  st.b PLAYERONEGUNS+17
  1365.  st.b PLAYERONEGUNS+19
  1366.  
  1367.  st.b PLAYERONEJETPACK+1
  1368.  
  1369.  st.b PLAYERTWOGUNS+1
  1370.  st.b PLAYERTWOGUNS+3
  1371.  st.b PLAYERTWOGUNS+5
  1372.  st.b PLAYERTWOGUNS+7
  1373.  st.b PLAYERTWOGUNS+9
  1374.  st.b PLAYERTWOGUNS+11
  1375.  st.b PLAYERTWOGUNS+13
  1376.  st.b PLAYERTWOGUNS+15
  1377.  st.b PLAYERTWOGUNS+17
  1378.  st.b PLAYERTWOGUNS+19
  1379.  
  1380.  move.w #0,PLAYERTWOFUEL
  1381.  
  1382.  st.b PLAYERTWOJETPACK+1
  1383.  
  1384.  move.l #PLAYERONEAMMO,a0
  1385.  move.l #PLAYERTWOAMMO,a1
  1386.  move.w #19,d1
  1387. .putinvals
  1388.  jsr GetRand
  1389.  and.w #63,d0
  1390.  add.w #5,d0
  1391.  move.w d0,(a0)+
  1392.  move.w d0,(a1)+
  1393.  dbra d1,.putinvals
  1394.  
  1395.  rts
  1396.  
  1397.  move.w #0,OldEnergy
  1398.  move.w #127,Energy
  1399.  jsr EnergyBar
  1400.  
  1401.  move.w #63,OldAmmo
  1402.  move.w #0,Ammo
  1403.  jsr AmmoBar
  1404.  move.w #0,OldAmmo
  1405.  
  1406.  move.b #0,PLR1_GunSelected
  1407.  
  1408.  move.b #0,PLR2_GunSelected
  1409.  rts
  1410.  
  1411. newdum:
  1412.  rts
  1413.  
  1414. DEFAULTGAME:
  1415.  move.w #0,MAXLEVEL
  1416.  
  1417.  move.l #MASTERPLAYERONEHEALTH,a0
  1418.  move.l #MASTERPLAYERONESHIELD,a1
  1419.  move.l #0,(a0)+
  1420.  move.l #0,(a0)+
  1421.  move.l #0,(a0)+
  1422.  move.l #0,(a0)+
  1423.  move.l #0,(a0)+
  1424.  move.l #0,(a0)+
  1425.  move.l #0,(a0)+
  1426.  move.l #0,(a0)+
  1427.  move.l #0,(a0)+
  1428.  move.l #0,(a0)+
  1429.  move.l #0,(a0)+
  1430.  
  1431.  move.l #0,(a1)+
  1432.  move.l #0,(a1)+
  1433.  move.l #0,(a1)+
  1434.  move.l #0,(a1)+
  1435.  move.l #0,(a1)+
  1436.  move.l #0,(a1)+
  1437.  
  1438.  move.w #200,MASTERPLAYERONEHEALTH
  1439.  move.w #$ff,MASTERPLAYERONEGUNS
  1440.  
  1441.  move.l LINKFILE,a5
  1442.  add.l #GunBulletTypes,a5
  1443.  move.w (a5),d0
  1444.  
  1445.  move.l #MASTERPLAYERONEAMMO,a5
  1446.  move.w #20,(a5,d0.w*2)
  1447.  
  1448.  rts
  1449.  
  1450. CHKPROT: dc.w 0
  1451.  
  1452. GETPARITY:
  1453.  move.w #6,d3
  1454. .calcparity:
  1455.  btst d3,d0
  1456.  beq.s .nochange
  1457.  bchg #7,d0
  1458. .nochange:
  1459.  dbra d3,.calcparity
  1460.  rts
  1461.  
  1462. CHECKPARITY:
  1463.  move.w #6,d3
  1464.  move.b #$0,d2
  1465. .calcparity:
  1466.  btst d3,d0
  1467.  beq.s .nochange
  1468.  bchg #7,d2
  1469. .nochange:
  1470.  dbra d3,.calcparity
  1471.  move.b d0,d1
  1472.  and.b #$80,d1
  1473.  eor.b d1,d2
  1474.  sne.s d5
  1475.  rts
  1476.  
  1477. CALCPASSWORD:
  1478.  rts
  1479.  
  1480. PASSLINETOGAME:
  1481.  rts
  1482.  
  1483. illega:
  1484.  
  1485.  move.w #-1,d0
  1486.  
  1487.  rts
  1488.  
  1489. PASSBUFFER:
  1490.  ds.b 8
  1491.  
  1492. CHECKBUFFER: ds.b 8
  1493.  
  1494. PASS:
  1495.  ds.b 16
  1496.  
  1497. **************************************************
  1498.  
  1499. CHANGECONTROLS:
  1500.  
  1501. ; move.w #6,OptScrn
  1502. ; bsr DRAWOPTSCRN
  1503. ; move.w #0,OPTNUM
  1504. ; bsr HIGHLIGHT
  1505. ; bsr WAITREL
  1506.  
  1507.  lea mnu_MYCONTROLSONE,a0
  1508.  bsr MYOPENMENU
  1509.  
  1510. .rdlop:
  1511.  lea mnu_MYCONTROLSONE,a0
  1512.  bsr CHECKMENU
  1513.  
  1514. ; tst.w d0
  1515. ; blt.s .rdlop
  1516.  
  1517.  cmp.w #11,d0
  1518.  beq CHANGECONTROLS2
  1519.  
  1520.  move.l #KEY_LINES,a0
  1521.  move.w d0,d1
  1522.  muls #21,d1
  1523.  add.l d1,a0
  1524.  add.w #16,a0
  1525.  move.w #$2020,(a0)
  1526.  
  1527.  
  1528.  
  1529.  movem.l a0/d0,-(a7)
  1530.  
  1531.  lea mnu_MYCONTROLSONE,a0
  1532.  jsr mnu_redraw
  1533.  
  1534. *********************************************
  1535.         move.l    #mnu_buttonanim,mnu_frameptr
  1536.         jsr    mnu_getrawvalue
  1537.         move.l    #mnu_cursanim,mnu_frameptr
  1538. ***********************************************
  1539.  
  1540.  move.l #CONTROLBUFFER,a1
  1541.  moveq #0,d1
  1542.  move.b d0,d1
  1543.  
  1544.  movem.l (a7)+,d0/a0
  1545.  
  1546.  move.b d1,(a1,d0.w)
  1547. ; move.l #KVALTOASC,a1
  1548.  add.w #132,d1
  1549.  move.b d1,1(a0)
  1550. ; move.l (a1,d1.w*4),(a0)
  1551. ; bsr JUSTDRAWIT
  1552. ; bsr WAITREL
  1553.  lea mnu_MYCONTROLSONE,a0
  1554.  jsr mnu_redraw
  1555.  bra .rdlop
  1556.  
  1557. .backtomain:
  1558.  rts
  1559.  
  1560.  
  1561. CHANGECONTROLS2:
  1562.  lea mnu_MYCONTROLSTWO,a0
  1563.  bsr MYOPENMENU
  1564.  
  1565. .rdlop:
  1566.  lea mnu_MYCONTROLSTWO,a0
  1567.  bsr CHECKMENU
  1568.  
  1569. ; tst.w d0
  1570. ; blt.s .rdlop
  1571.  
  1572.  cmp.w #6,d0
  1573.  beq .backtomain
  1574.  
  1575.  move.l #KEY_LINES2,a0
  1576.  move.w d0,d1
  1577.  muls #21,d1
  1578.  add.l d1,a0
  1579.  add.w #16,a0
  1580.  move.w #$2020,(a0)
  1581.  
  1582.  movem.l a0/d0,-(a7)
  1583.  
  1584.  lea mnu_MYCONTROLSTWO,a0
  1585.  jsr mnu_redraw
  1586.  
  1587. **********************************************
  1588.         move.l    #mnu_buttonanim,mnu_frameptr
  1589.         jsr    mnu_getrawvalue
  1590.         move.l    #mnu_cursanim,mnu_frameptr
  1591. ***********************************************
  1592.  
  1593.  move.l #CONTROLBUFFER+11,a1
  1594.  moveq #0,d1
  1595.  move.b d0,d1
  1596.  
  1597.  movem.l (a7)+,d0/a0
  1598.  
  1599.  move.b d1,(a1,d0.w)
  1600. ; move.l #KVALTOASC,a1
  1601.  add.w #132,d1
  1602.  move.b d1,1(a0)
  1603. ; move.l (a1,d1.w*4),(a0)
  1604. ; bsr JUSTDRAWIT
  1605. ; bsr WAITREL
  1606.  lea mnu_MYCONTROLSTWO,a0
  1607.  jsr mnu_redraw
  1608.  bra .rdlop
  1609.  
  1610. .backtomain:
  1611.  rts
  1612.  rts
  1613.  
  1614. **************************************************
  1615.  
  1616.  
  1617. MAXLEVEL: dc.w 0
  1618.  
  1619. SHOWCREDITS:
  1620.  move.w #2,OptScrn
  1621.  bsr DRAWOPTSCRN
  1622.  move.w #0,OPTNUM
  1623.  bsr HIGHLIGHT
  1624.  
  1625.  bsr WAITREL
  1626.  
  1627. .rdlop:
  1628.  bsr CHECKMENU
  1629.  tst.w d0
  1630.  blt.s .rdlop
  1631.  
  1632.  bra READMAINMENU
  1633.  
  1634. HELDDOWN:
  1635.  dc.w 0
  1636.  
  1637. WAITREL:
  1638.  
  1639.  movem.l d0/d1/d2/d3,-(a7)
  1640.  
  1641.  move.l #KeyMap,a5
  1642. WAITREL2:
  1643.  btst #7,$bfe001
  1644.  beq.s WAITREL2
  1645.  
  1646.  IFEQ CD32VER
  1647.  tst.b $40(a5)
  1648.  bne.s WAITREL2
  1649.  tst.b $44(a5)
  1650.  bne.s WAITREL2
  1651.  tst.b $4c(a5)
  1652.  bne.s WAITREL2
  1653.  tst.b $4d(a5)
  1654.  bne.s WAITREL2
  1655.  ENDC
  1656.  
  1657.  btst #1,$dff00c
  1658.  sne d0
  1659.  btst #1,$dff00d
  1660.  sne d1
  1661.  btst #0,$dff00c
  1662.  sne d2
  1663.  btst #0,$dff00d
  1664.  sne d3
  1665.  
  1666.  eor.b d0,d2
  1667.  eor.b d1,d3
  1668.  tst.b d2
  1669.  bne.s WAITREL2
  1670.  tst.b d3
  1671.  bne.s WAITREL2
  1672.  
  1673.  
  1674.  movem.l (a7)+,d0/d1/d2/d3
  1675.  rts
  1676.  
  1677. PUTINLINE:
  1678.  moveq #19,d0
  1679. pill
  1680.  move.b (a0)+,(a1)+
  1681.  dbra d0,pill
  1682.  rts
  1683.  
  1684. MYOPENMENU:
  1685. .redraw:    move.l    a0,-(a7)
  1686.         jsr    mnu_openmenu        ; Open new menu
  1687.         move.l    (a7)+,a0
  1688.     rts
  1689.  
  1690. CHECKMENU:
  1691.  
  1692.     move.b #0,lastpressed
  1693.  
  1694. .loop:        movem.l    a0,-(a7)
  1695.         jsr    mnu_update
  1696.         movem.l    (a7)+,a0
  1697.         move.l    a0,-(a7)
  1698.         jsr    mnu_waitmenu        ; Wait for option
  1699.         move.l    (a7)+,a0
  1700.         moveq.l    #0,d2
  1701.         move.w    mnu_row,d2
  1702.         divu    14(a0),d2
  1703.         swap.w    d2
  1704.         move.w    d2,mnu_currentsel
  1705.  
  1706.          move.w d2,d0    ; option number
  1707.  
  1708.  rts
  1709.  
  1710. HIGHLIGHT:
  1711.  
  1712.  SAVEREGS
  1713.  
  1714.  move.w OptScrn,d0
  1715.  move.l #MENUDATA,a0
  1716.  move.l 4(a0,d0.w*8),a0
  1717.  move.w OPTNUM,d0
  1718.  lea (a0,d0.w*8),a0
  1719.  move.w (a0)+,d0    ;left
  1720.  move.w (a0)+,d1    ;top
  1721.  move.w (a0)+,d2    ;width
  1722.  
  1723.  muls #16*8,d1
  1724.  move.l OPTSPRADDR,a1
  1725.  add.w d1,a1
  1726.  add.w #8+16,a1
  1727.  move.l #SCRTOSPR2,a5
  1728.  adda.w d0,a5
  1729.  adda.w d0,a5
  1730.  
  1731. NOTLOP:
  1732.  
  1733.  move.w (a5)+,d3
  1734.  lea (a1,d3.w),a2
  1735.  not.b (a2)
  1736.  not.b 16(a2)
  1737.  not.b 32(a2)
  1738.  not.b 48(a2)
  1739.  not.b 64(a2)
  1740.  not.b 80(a2)
  1741.  not.b 96(a2)
  1742.  not.b 112(a2)
  1743.  not.b 128(a2)
  1744.  subq #1,d2
  1745.  bgt.s NOTLOP
  1746.  
  1747.  GETREGS
  1748.  rts
  1749.  
  1750. SCRTOSPR2:
  1751. val SET 0
  1752.  REPT 6
  1753.  dc.w val+0
  1754.  dc.w val+1
  1755.  dc.w val+2
  1756.  dc.w val+3
  1757.  dc.w val+4
  1758.  dc.w val+5
  1759.  dc.w val+6
  1760.  dc.w val+7
  1761. val SET val+258*16
  1762.  ENDR
  1763.  
  1764. CLROPTSCRN:
  1765.  
  1766.  move.l #$2cdfea,d0
  1767.  move.w (a4,d0.l),d0
  1768.  add.w d0,RVAL2
  1769.  
  1770.  move.l OPTSPRADDR,a0
  1771.  lea 16(a0),a1
  1772.  lea 16+(258*16)(a0),a2
  1773.  lea 16+(258*16*2)(a0),a3
  1774.  lea 16+(258*16*3)(a0),a4
  1775.  lea 258*16(a4),a0
  1776.  
  1777.  move.w #256,d0
  1778.  moveq #0,d1
  1779. CLRLOP:
  1780.  move.l d1,(a0)+
  1781.  move.l d1,(a0)+
  1782.  move.l d1,(a0)+
  1783.  move.l d1,(a0)+
  1784.  move.l d1,(a1)+
  1785.  move.l d1,(a1)+
  1786.  move.l d1,(a1)+
  1787.  move.l d1,(a1)+
  1788.  move.l d1,(a2)+
  1789.  move.l d1,(a2)+
  1790.  move.l d1,(a2)+
  1791.  move.l d1,(a2)+
  1792.  move.l d1,(a3)+
  1793.  move.l d1,(a3)+
  1794.  move.l d1,(a3)+
  1795.  move.l d1,(a3)+
  1796.  move.l d1,(a4)+
  1797.  move.l d1,(a4)+
  1798.  move.l d1,(a4)+
  1799.  move.l d1,(a4)+
  1800.  dbra d0,CLRLOP
  1801.  
  1802.  move.l OPTSPRADDR,a0
  1803.  move.w #44*256+64,(a0)
  1804.  move.w #44*256+2,8(a0)
  1805.  add.l #258*16,a0
  1806.  
  1807.  move.w #44*256+96,(a0)
  1808.  move.w #44*256+2,8(a0)
  1809.  add.l #258*16,a0
  1810.  
  1811.  move.w #44*256+128,(a0)
  1812.  move.w #44*256+2,8(a0)
  1813.  add.l #258*16,a0
  1814.  
  1815.  move.w #44*256+160,(a0)
  1816.  move.w #44*256+2,8(a0)
  1817.  add.l #258*16,a0
  1818.  
  1819.  move.w #44*256+192,(a0)
  1820.  move.w #44*256+2,8(a0)
  1821.  
  1822.  rts
  1823.  
  1824. DRAWOPTSCRN:
  1825.  rts
  1826.  
  1827.  bsr CLROPTSCRN
  1828.  
  1829. JUSTDRAWIT:
  1830.  
  1831.  move.l #font,a0
  1832.  move.l #MENUDATA,a1
  1833.  move.w OptScrn,d0
  1834.  move.l (a1,d0.w*8),a1
  1835.  
  1836.  move.l OPTSPRADDR,a3
  1837.  add.l #16,a3
  1838.  moveq #0,d2
  1839.  
  1840.  move.w #31,d0
  1841. linelop:
  1842.  move.w #39,d1
  1843.  move.l #SCRTOSPR,a4
  1844.  move.l a3,a2
  1845. charlop:
  1846.  move.b (a1)+,d2
  1847.  lea (a0,d2.w*8),a5
  1848.  move.b (a5)+,(a2)
  1849.  move.b (a5)+,16(a2)
  1850.  move.b (a5)+,32(a2)
  1851.  move.b (a5)+,48(a2)
  1852.  move.b (a5)+,64(a2)
  1853.  move.b (a5)+,80(a2)
  1854.  move.b (a5)+,96(a2)
  1855.  move.b (a5),112(a2)
  1856.  add.w (a4)+,a2
  1857.  dbra d1,charlop
  1858.  add.w #16*8,a3
  1859.  dbra d0,linelop
  1860.  
  1861.  rts
  1862.   
  1863. SCRTOSPR:
  1864.  dc.w 1,1,1,1,1,1,1,258*16-7
  1865.  dc.w 1,1,1,1,1,1,1,258*16-7
  1866.  dc.w 1,1,1,1,1,1,1,258*16-7
  1867.  dc.w 1,1,1,1,1,1,1,258*16-7
  1868.  dc.w 1,1,1,1,1,1,1,258*16-7
  1869.  dc.w 1,1,1,1,1,1,1,258*16-7
  1870.   
  1871. OPTNUM: dc.w 0
  1872. OptScrn: dc.w 0
  1873.  
  1874. SAVEGAMENAME: dc.b "tkg2:boot.dat",0
  1875.  even
  1876.  
  1877. SAVEGAMEPOS: dc.l 0
  1878. SAVEGAMELEN: dc.l 0
  1879.  
  1880. LOADPOSITION: 
  1881.  
  1882.  jsr mnu_clearscreen
  1883.  jsr mnu_DROPBLITINT 
  1884.  
  1885.  move.l #SAVEGAMENAME,a0
  1886.  move.l #SAVEGAMEPOS,d0
  1887.  move.l #SAVEGAMELEN,d1
  1888.  jsr INITQUEUE
  1889.  jsr QUEUEFILE
  1890.  jsr FLUSHQUEUE
  1891.  
  1892.  jsr mnu_GETBLITINT
  1893.  jsr mnu_setscreen
  1894.  
  1895.  
  1896.  move.l SAVEGAMEPOS,a2    ; address of first saved game.
  1897.  
  1898.  move.l #mnu_LSLOTA+21,a4
  1899.  
  1900.  move.l a2,a3
  1901.  add.w #2+(22*2)+(12*2),a3
  1902.  move.w #4,d7
  1903. .findlevs:
  1904.  
  1905.  move.l a4,a1
  1906.  move.w (a3),d1
  1907.  muls #40,d1
  1908.  move.l LINKFILE,a0
  1909.  add.l #LevelName,a0
  1910.  add.l d1,a0
  1911.  jsr PUTINLINE
  1912.  add.l #21,a4
  1913.  add.w #2+(22*2)+(12*2),a3
  1914.  
  1915.  dbra d7,.findlevs
  1916.  
  1917. ; move.w #8,OptScrn
  1918. ; move.w #0,OPTNUM
  1919.  
  1920. ; bsr DRAWOPTSCRN
  1921. ; bsr HIGHLIGHT
  1922. ; bsr WAITREL
  1923.  
  1924.  lea mnu_MYLOADMENU,a0
  1925.  bsr MYOPENMENU
  1926.  
  1927. .rdlop:
  1928.  lea mnu_MYLOADMENU,a0
  1929.  bsr CHECKMENU
  1930.  
  1931.  cmp.w #6,d0
  1932.  beq.s .noload
  1933.  
  1934.  move.l SAVEGAMEPOS,a0
  1935.  muls #2+(22*2)+(12*2),d0
  1936.  add.l d0,a0
  1937.  
  1938.  move.l #MASTERPLAYERONEHEALTH,a1
  1939.  move.w (a0)+,MAXLEVEL
  1940.  
  1941.  REPT 11
  1942.  move.l (a0)+,(a1)+
  1943.  ENDR
  1944.  REPT 6
  1945.  move.l (a0)+,(a1)+
  1946.  ENDR
  1947.  
  1948.  move.w MAXLEVEL,d0
  1949.  move.l #mnu_CURRENTLEVELLINE,a1
  1950.  muls #40,d0
  1951.  move.l LINKFILE,a0
  1952.  add.l #LevelName,a0
  1953.  add.l d0,a0
  1954.  bsr PUTINLINE
  1955.  
  1956. .noload:
  1957.  
  1958.  move.l SAVEGAMEPOS,a1
  1959.  move.l SAVEGAMELEN,d0
  1960.  CALLEXEC FreeMem
  1961.  
  1962.  rts
  1963.  
  1964. SAVEPOSITION:
  1965.  
  1966.  jsr mnu_clearscreen
  1967.  jsr mnu_DROPBLITINT 
  1968.  
  1969.  move.l #SAVEGAMENAME,a0
  1970.  move.l #SAVEGAMEPOS,d0
  1971.  move.l #SAVEGAMELEN,d1
  1972.  jsr INITQUEUE
  1973.  jsr QUEUEFILE
  1974.  jsr FLUSHQUEUE
  1975.  
  1976.  jsr mnu_GETBLITINT
  1977.  jsr mnu_setscreen
  1978.  
  1979.  move.l SAVEGAMEPOS,a2    ; address of first saved game.
  1980.  
  1981.  add.w #2+(22*2)+(12*2),a2
  1982.  
  1983.  move.l #mnu_SSLOTA,a4
  1984.  
  1985.  move.l a2,a3
  1986.  move.w #4,d7
  1987. .findlevs:
  1988.  
  1989.  move.l a4,a1
  1990.  move.w (a3),d1
  1991.  muls #40,d1
  1992.  move.l LINKFILE,a0
  1993.  add.l #LevelName,a0
  1994.  add.l d1,a0
  1995.  jsr PUTINLINE
  1996.  add.l #21,a4
  1997.  add.w #2+(22*2)+(12*2),a3
  1998.  
  1999.  dbra d7,.findlevs
  2000.  
  2001. ; move.w #9,OptScrn
  2002. ; move.w #0,OPTNUM
  2003.  
  2004. ; bsr DRAWOPTSCRN
  2005. ; bsr HIGHLIGHT
  2006. ; bsr WAITREL
  2007.  
  2008.  lea mnu_MYSAVEMENU,a0
  2009.  bsr MYOPENMENU
  2010.  
  2011. .rdlop:
  2012.  lea mnu_MYSAVEMENU,a0
  2013.  bsr CHECKMENU
  2014.  
  2015.  cmp.w #5,d0
  2016.  beq .nosave
  2017.  
  2018.  move.l d0,-(a7)
  2019.  
  2020.  jsr mnu_clearscreen
  2021.  jsr mnu_DROPBLITINT
  2022.  
  2023.  move.w #$83f0,$dff096
  2024.  
  2025.  move.l (a7)+,d0
  2026.  
  2027.  addq #1,d0
  2028.  
  2029.  move.l SAVEGAMEPOS,a0
  2030.  muls #2+(22*2)+(12*2),d0
  2031.  add.l d0,a0
  2032.  
  2033.  move.l #MASTERPLAYERONEHEALTH,a1
  2034.  move.w MAXLEVEL,(a0)+
  2035.  
  2036.  REPT 11
  2037.  move.l (a1)+,(a0)+
  2038.  ENDR
  2039.  REPT 6
  2040.  move.l (a1)+,(a0)+
  2041.  ENDR
  2042.   
  2043.  move.l oldcopper,$dff080
  2044.  move.w #$8020,$dff000+intena
  2045.  
  2046.  move.l _IntuitionBase,a6
  2047.  jsr _LVORemakeDisplay(a6)
  2048.  
  2049.  jsr _LVORethinkDisplay(a6)
  2050.  
  2051.  move.l doslib,a6
  2052.  move.l #SAVEGAMENAME,d1
  2053.  move.l #1006,d2
  2054.  jsr -30(a6)
  2055.  move.l d0,handle
  2056.  
  2057.  move.l doslib,a6
  2058.  move.l SAVEGAMEPOS,d2
  2059.  move.l handle,d1
  2060.  move.l SAVEGAMELEN,d3
  2061.  jsr _LVOWrite(a6)
  2062.  
  2063.  move.l doslib,a6
  2064.  move.l handle,d1
  2065.  jsr -36(a6)
  2066.  
  2067.  move.l doslib,a6
  2068.  move.l #200,d1
  2069.  jsr -198(a6) 
  2070.  
  2071.  move.w #$0020,$dff000+intena
  2072.  
  2073.  jsr mnu_GETBLITINT
  2074.  jsr mnu_setscreen
  2075.   
  2076. .nosave:
  2077.  
  2078.  move.l SAVEGAMEPOS,a1
  2079.  move.l SAVEGAMELEN,d0
  2080.  CALLEXEC FreeMem
  2081.  
  2082.  rts
  2083.  
  2084. MENUDATA:
  2085. ;0
  2086.  dc.l ONEPLAYERMENU_TXT
  2087.  dc.l ONEPLAYERMENU_OPTS
  2088. ;1
  2089.  dc.l INSTRUCTIONS_TXT
  2090.  dc.l INSTRUCTIONS_OPTS
  2091. ;2
  2092.  dc.l CREDITMENU_TXT
  2093.  dc.l CREDITMENU_OPTS
  2094. ;3
  2095.  dc.l ASKFORDISK_TXT
  2096.  dc.l ASKFORDISK_OPTS
  2097. ;4
  2098. ; dc.l ONEPLAYERMENU_TXT
  2099. ; dc.l ONEPLAYERMENU_OPTS
  2100.  dc.l MASTERPLAYERMENU_TXT
  2101.  dc.l MASTERPLAYERMENU_OPTS
  2102. ;5
  2103.  dc.l SLAVEPLAYERMENU_TXT
  2104.  dc.l SLAVEPLAYERMENU_OPTS
  2105. ;6
  2106.  dc.l CONTROL_TXT
  2107.  dc.l CONTROL_OPTS
  2108. ;7
  2109.  dc.l PROTMENU_TXT
  2110.  dc.l CONTROL_OPTS
  2111. ;8
  2112.  dc.l LOADMENU_TXT
  2113.  dc.l LOADMENU_OPTS
  2114. ;9
  2115.  dc.l SAVEMENU_TXT
  2116.  dc.l SAVEMENU_OPTS
  2117. ;10
  2118.  dc.l LEVELDISK_TXT
  2119.  dc.l ASKFORDISK_OPTS
  2120.  
  2121.  
  2122. EMPTYSLOTNAME:
  2123. ;      0123456789012345678901234567890123456789
  2124.  dc.b '               EMPTY SLOT               ' 
  2125.  
  2126. LOADMENU_TXT: 
  2127. ;      0123456789012345678901234567890123456789
  2128.  dc.b '                                        ' ;0
  2129.  dc.b '                                        ' ;1
  2130.  dc.b '                                        ' ;2
  2131.  dc.b '                                        ' ;3
  2132.  dc.b '         LOAD A SAVED POSITION:         ' ;4
  2133.  dc.b '                                        ' ;5
  2134.  dc.b '                                        ' ;6
  2135.  dc.b '                                        ' ;7
  2136.  dc.b '                                        ' ;8
  2137. LSLOTA:
  2138.  dc.b '                                        ' ;9
  2139.  dc.b '                                        ' ;0
  2140. LSLOTB:
  2141.  dc.b '                                        ' ;1
  2142.  dc.b '                                        ' ;2
  2143. LSLOTC:
  2144.  dc.b '                                        ' ;3
  2145.  dc.b '                                        ' ;4
  2146. LSLOTD:
  2147.  dc.b '                                        ' ;5
  2148.  dc.b '                                        ' ;6
  2149. LSLOTE:
  2150.  dc.b '                                        ' ;7
  2151.  dc.b '                                        ' ;8
  2152. LSLOTF:
  2153.  dc.b '                                        ' ;9
  2154.  dc.b '                                        ' ;0
  2155.  dc.b '               * CANCEL *               ' ;1
  2156.  dc.b '                                        ' ;2
  2157.  dc.b '                                        ' ;3
  2158.  dc.b '                                        ' ;4
  2159.  dc.b '                                        ' ;5
  2160.  dc.b '                                        ' ;6
  2161.  dc.b '                                        ' ;7
  2162.  dc.b '                                        ' ;8
  2163.  dc.b '                                        ' ;9
  2164.  dc.b '                                        ' ;0
  2165.  dc.b '                                        ' ;1
  2166.  
  2167. LOADMENU_OPTS:
  2168.  dc.w 0,9,40,1
  2169.  dc.w 0,11,40,1
  2170.  dc.w 0,13,40,1
  2171.  dc.w 0,15,40,1
  2172.  dc.w 0,17,40,1
  2173.  dc.w 0,19,40,1
  2174.  dc.w 14,21,12,1
  2175.  dc.w -1
  2176.  
  2177. LEVELDISK_TXT:
  2178. ;      0123456789012345678901234567890123456789
  2179.  dc.b '                                        ' ;0
  2180.  dc.b '                                        ' ;0
  2181.  dc.b '                                        ' ;0
  2182.  dc.b '                                        ' ;0
  2183.  dc.b '                                        ' ;0
  2184.  dc.b '                                        ' ;0
  2185.  dc.b '                                        ' ;0
  2186.  dc.b '                                        ' ;0
  2187.  dc.b '                                        ' ;0
  2188.  dc.b '                                        ' ;0
  2189.  dc.b '                                        ' ;0
  2190.  dc.b '  IF PLAYING FROM DISK, PLEASE INSERT   ' ;0
  2191.  dc.b '       LEVELS DISK IN DRIVE DF0:        ' ;0
  2192.  dc.b '                                        ' ;0
  2193.  dc.b '     PRESS MOUSE BUTTON WHEN READY..    ' ;0
  2194.  dc.b '                                        ' ;0
  2195.  dc.b '                                        ' ;0
  2196.  dc.b '                                        ' ;0
  2197.  dc.b '                                        ' ;0
  2198.  dc.b '                                        ' ;0
  2199.  dc.b '                                        ' ;0
  2200.  dc.b '                                        ' ;0
  2201.  dc.b '                                        ' ;0
  2202.  dc.b '                                        ' ;0
  2203.  dc.b '                                        ' ;0
  2204.  dc.b '                                        ' ;0
  2205.  dc.b '                                        ' ;0
  2206.  dc.b '                                        ' ;0
  2207.  dc.b '                                        ' ;0
  2208.  dc.b '                                        ' ;0
  2209.  dc.b '                                        ' ;0
  2210.  dc.b '                                        ' ;0
  2211.  
  2212.  
  2213. SAVEMENU_TXT: 
  2214. ;      0123456789012345678901234567890123456789
  2215.  dc.b '                                        ' ;0
  2216.  dc.b '                                        ' ;1
  2217.  dc.b '                                        ' ;2
  2218.  dc.b '                                        ' ;3
  2219.  dc.b '         SAVE CURRENT POSITION:         ' ;4
  2220.  dc.b '                                        ' ;5
  2221.  dc.b '                                        ' ;6
  2222.  dc.b '                                        ' ;7
  2223.  dc.b '                                        ' ;8
  2224. SSLOTA:
  2225.  dc.b '                                        ' ;9
  2226.  dc.b '                                        ' ;0
  2227. SSLOTB:
  2228.  dc.b '                                        ' ;1
  2229.  dc.b '                                        ' ;2
  2230. SSLOTC:
  2231.  dc.b '                                        ' ;3
  2232.  dc.b '                                        ' ;4
  2233. SSLOTD:
  2234.  dc.b '                                        ' ;5
  2235.  dc.b '                                        ' ;6
  2236. SSLOTE:
  2237.  dc.b '                                        ' ;7
  2238.  dc.b '                                        ' ;8
  2239. SSLOTF:
  2240.  dc.b '                                        ' ;9
  2241.  dc.b '                                        ' ;0
  2242.  dc.b '               * CANCEL *               ' ;1
  2243.  dc.b '                                        ' ;2
  2244.  dc.b '                                        ' ;3
  2245.  dc.b '                                        ' ;4
  2246.  dc.b '                                        ' ;5
  2247.  dc.b '                                        ' ;6
  2248.  dc.b '                                        ' ;7
  2249.  dc.b '                                        ' ;8
  2250.  dc.b '                                        ' ;9
  2251.  dc.b '                                        ' ;0
  2252.  dc.b '                                        ' ;1
  2253.  
  2254. SAVEMENU_OPTS:
  2255.  dc.w 0,9,40,1
  2256.  dc.w 0,11,40,1
  2257.  dc.w 0,13,40,1
  2258.  dc.w 0,15,40,1
  2259.  dc.w 0,17,40,1
  2260.  dc.w 0,19,40,1
  2261.  dc.w 14,21,12,1
  2262.  dc.w -1
  2263.  
  2264.  
  2265. ASKFORDISK_TXT:
  2266. ;      0123456789012345678901234567890123456789
  2267.  dc.b '                                        ' ;0
  2268.  dc.b '                                        ' ;1
  2269.  dc.b '                                        ' ;2
  2270.  dc.b '                                        ' ;3
  2271.  dc.b '                                        ' ;4
  2272.  dc.b '                                        ' ;5
  2273.  dc.b '                                        ' ;6
  2274.  dc.b '                                        ' ;7
  2275.  dc.b '                                        ' ;8
  2276.  dc.b '                                        ' ;9
  2277.  dc.b '                                        ' ;0
  2278.  dc.b '                                        ' ;1
  2279.  dc.b '                                        ' ;2
  2280.  dc.b '         PLEASE INSERT VOLUME:          ' ;3
  2281.  dc.b '                                        ' ;4
  2282. VOLLINE:
  2283.  dc.b '                                        ' ;9
  2284.  dc.b '                                        ' ;9
  2285.  dc.b '          PRESS MOUSE BUTTON            ' ;5
  2286.  dc.b '          WHEN DISK ACTIVITY            ' ;6
  2287.  dc.b '               FINISHES                 ' ;7
  2288.  dc.b '                                        ' ;8
  2289.  dc.b '                                        ' ;1
  2290.  dc.b '                                        ' ;2
  2291.  dc.b '                                        ' ;3
  2292.  dc.b '                                        ' ;4
  2293.  dc.b '                                        ' ;5
  2294.  dc.b '                                        ' ;6
  2295.  dc.b '                                        ' ;7
  2296.  dc.b '                                        ' ;8
  2297.  dc.b '                                        ' ;9
  2298.  dc.b '                                        ' ;0
  2299.  dc.b '                                        ' ;1
  2300.  
  2301. ASKFORDISK_OPTS:
  2302.  dc.w -1
  2303.  
  2304.  
  2305. ONEPLAYERMENU_TXT:
  2306. ;      0123456789012345678901234567890123456789
  2307.  dc.b '                                        ' ;0
  2308.  dc.b '                                        ' ;1
  2309.  dc.b '                                        ' ;2
  2310.  dc.b '                                        ' ;3
  2311.  dc.b '                                        ' ;4
  2312.  dc.b '                                        ' ;5
  2313.  dc.b '                                        ' ;6
  2314.  dc.b '                                        ' ;7
  2315.  dc.b '                                        ' ;8
  2316.  dc.b '                                        ' ;9
  2317.  dc.b '                                        ' ;0
  2318. CURRENTLEVELLINE:
  2319.  dc.b '         *** A.F DEMO LEVEL ***         ' ;1 
  2320.  dc.b '                                        ' ;2
  2321.  dc.b '                1 PLAYER                ' ;3
  2322.  dc.b '                                        ' ;4
  2323.  dc.b '               PLAY  GAME               ' ;5
  2324.  dc.b '                                        ' ;6
  2325.  dc.b '            CONTROL  OPTIONS            ' ;7
  2326.  dc.b '                                        ' ;8
  2327.  dc.b '              GAME CREDITS              ' ;9
  2328.  dc.b '                                        ' ;0
  2329.  dc.b '             LOAD  POSITION             ' ;1
  2330.  dc.b '                                        ' ;2
  2331. PASSWORDLINE:
  2332.  dc.b '             SAVE  POSITION             ' ;1
  2333.  dc.b '                                        ' ;4
  2334.  dc.b '                                        ' ;6
  2335.  dc.b '                                        ' ;6
  2336.  dc.b '                                        ' ;7
  2337.  dc.b '                                        ' ;8
  2338.  dc.b '                                        ' ;9
  2339.  dc.b '                                        ' ;0
  2340.  dc.b '                                        ' ;1
  2341.  
  2342. ONEPLAYERMENU_OPTS:
  2343.  dc.w 0,11,40,1
  2344.  dc.w 16,13,8,1
  2345.  dc.w 15,15,10,1
  2346.  dc.w 12,17,16,1
  2347.  dc.w 14,19,12,1
  2348.  dc.w 12,21,16,1
  2349.  dc.w 12,23,16,1
  2350.  dc.w -1
  2351.  
  2352.  
  2353. MASTERPLAYERMENU_TXT:
  2354. ;      0123456789012345678901234567890123456789
  2355.  dc.b '                                        ' ;0
  2356.  dc.b '                                        ' ;1
  2357.  dc.b '                                        ' ;2
  2358.  dc.b '                                        ' ;3
  2359.  dc.b '                                        ' ;4
  2360.  dc.b '                                        ' ;5
  2361.  dc.b '                                        ' ;6
  2362.  dc.b '                                        ' ;7
  2363.  dc.b '                                        ' ;8
  2364.  dc.b '                                        ' ;9
  2365.  dc.b '                                        ' ;0
  2366.  dc.b '                                        ' ;1
  2367.  dc.b '            2 PLAYER  MASTER            ' ;2
  2368.  dc.b '                                        ' ;3
  2369. CURRENTLEVELLINEM:
  2370.  dc.b '           LEVEL 1 : THE GATE           ' ;4 
  2371.  dc.b '                                        ' ;5
  2372.  dc.b '               PLAY  GAME               ' ;6
  2373.  dc.b '                                        ' ;7
  2374.  dc.b '            CONTROL  OPTIONS            ' ;8
  2375.  dc.b '                                        ' ;9
  2376.  dc.b '                                        ' ;0
  2377.  dc.b '                                        ' ;1
  2378.  dc.b '                                        ' ;2
  2379.  dc.b '                                        ' ;3
  2380.  dc.b '                                        ' ;4
  2381.  dc.b '                                        ' ;5
  2382.  dc.b '                                        ' ;6
  2383.  dc.b '                                        ' ;7
  2384.  dc.b '                                        ' ;8
  2385.  dc.b '                                        ' ;9
  2386.  dc.b '                                        ' ;0
  2387.  dc.b '                                        ' ;1
  2388.  
  2389. MASTERPLAYERMENU_OPTS:
  2390.  dc.w 12,12,16,1
  2391.  dc.w 6,14,28,1
  2392.  dc.w 15,16,10,1
  2393.  dc.w 12,18,16,1
  2394.  dc.w -1
  2395.  
  2396. SLAVEPLAYERMENU_TXT:
  2397. ;      0123456789012345678901234567890123456789
  2398.  dc.b '                                        ' ;0
  2399.  dc.b '                                        ' ;1
  2400.  dc.b '                                        ' ;2
  2401.  dc.b '                                        ' ;3
  2402.  dc.b '                                        ' ;4
  2403.  dc.b '                                        ' ;5
  2404.  dc.b '                                        ' ;6
  2405.  dc.b '                                        ' ;7
  2406.  dc.b '                                        ' ;8
  2407.  dc.b '                                        ' ;9
  2408.  dc.b '                                        ' ;9
  2409.  dc.b '                                        ' ;1
  2410.  dc.b '             2 PLAYER SLAVE             ' ;4
  2411.  dc.b '                                        ' ;3
  2412.  dc.b '               PLAY  GAME               ' ;2
  2413.  dc.b '                                        ' ;5
  2414.  dc.b '            CONTROL  OPTIONS            ' ;0
  2415.  dc.b '                                        ' ;1
  2416.  dc.b '                                        ' ;3
  2417.  dc.b '                                        ' ;7
  2418.  dc.b '                                        ' ;7
  2419.  dc.b '                                        ' ;3
  2420.  dc.b '                                        ' ;3
  2421.  dc.b '                                        ' ;3
  2422.  dc.b '                                        ' ;4
  2423.  dc.b '                                        ' ;5
  2424.  dc.b '                                        ' ;6
  2425.  dc.b '                                        ' ;7
  2426.  dc.b '                                        ' ;9
  2427.  dc.b '                                        ' ;9
  2428.  dc.b '                                        ' ;9
  2429.  dc.b '                                        ' ;9
  2430.  
  2431.  
  2432. PROTMENU_TXT:
  2433. ;      0123456789012345678901234567890123456789
  2434.  dc.b '                                        ' ;0
  2435.  dc.b '                                        ' ;1
  2436.  dc.b '                                        ' ;2
  2437.  dc.b '                                        ' ;3
  2438.  dc.b '                                        ' ;4
  2439.  dc.b '                                        ' ;5
  2440.  dc.b '                                        ' ;6
  2441.  dc.b '                                        ' ;7
  2442.  dc.b '                                        ' ;8
  2443.  dc.b '                                        ' ;9
  2444.  dc.b '                                        ' ;0
  2445.  dc.b '                                        ' ;1
  2446.  dc.b ' TYPE IN THREE DIGIT CODE FROM MANUAL : ' ;2
  2447.  dc.b '                                        ' ;3
  2448. PROTLINE:
  2449.  dc.b '        TABLE 00 ROW 00 COLUMN 00       ' ;4
  2450.  dc.b '                                        ' ;5
  2451.  dc.b '                                        ' ;6
  2452.  dc.b '                                        ' ;7
  2453.  dc.b '                                        ' ;8
  2454.  dc.b '                                        ' ;9
  2455.  dc.b '                                        ' ;0
  2456.  dc.b '                                        ' ;1
  2457.  dc.b '                                        ' ;2
  2458.  dc.b '                                        ' ;3
  2459.  dc.b '                                        ' ;4
  2460.  dc.b '                                        ' ;5
  2461.  dc.b '                                        ' ;6
  2462.  dc.b '                                        ' ;7
  2463.  dc.b '                                        ' ;9
  2464.  dc.b '                                        ' ;0
  2465.  dc.b '                                        ' ;1
  2466.  
  2467.  
  2468.  
  2469. SLAVEPLAYERMENU_OPTS:
  2470.  dc.w 12,12,16,1
  2471.  dc.w 15,14,10,1
  2472.  dc.w 12,16,16,1
  2473.  dc.w -1
  2474.  
  2475.  
  2476. PLAYER_OPTS:
  2477. ;      0123456789012345678901234567890123456789
  2478.  dc.b '                 1 PLAYER               '
  2479.  dc.b '             2  PLAYER MASTER           '
  2480.  dc.b '              2 PLAYER SLAVE            '
  2481.  
  2482. LEVEL_OPTS:
  2483. ;      0123456789012345678901234567890123456789
  2484.  dc.b  '       CU AMIGA *EXCLUSIVE* DEMO        '
  2485.  dc.b '      LEVEL  2 :       STORAGE BAY      '
  2486.  dc.b '      LEVEL  3 :     SEWER NETWORK      '
  2487.  dc.b '      LEVEL  4 :     THE COURTYARD      '
  2488.  dc.b '      LEVEL  5 :      SYSTEM PURGE      '
  2489.  dc.b '      LEVEL  6 :         THE MINES      '
  2490.  dc.b '      LEVEL  7 :       THE FURNACE      '
  2491.  dc.b '      LEVEL  8 :  TEST ARENA GAMMA      '
  2492.  dc.b '      LEVEL  9 :      SURFACE ZONE      '
  2493.  dc.b '      LEVEL 10 :     TRAINING AREA      '
  2494.  dc.b '      LEVEL 11 :       ADMIN BLOCK      '
  2495.  dc.b '      LEVEL 12 :           THE PIT      '
  2496.  dc.b '      LEVEL 13 :            STRATA      '
  2497.  dc.b '      LEVEL 14 :      REACTOR CORE      '
  2498.  dc.b '      LEVEL 15 :     COOLING TOWER      '
  2499.  dc.b '      LEVEL 16 :    COMMAND CENTRE      '
  2500.  
  2501. CONTROL_TXT:
  2502. ;      0123456789012345678901234567890123456789
  2503.  dc.b '                                        ' ;0
  2504.  dc.b '                                        ' ;1
  2505.  dc.b '            DEFINE  CONTROLS            ' ;2
  2506.  dc.b '                                        ' ;3
  2507. ;KEY_LINES:
  2508.  dc.b '     TURN LEFT                  LCK     ' ;4
  2509.  dc.b '     TURN RIGHT                 RCK     ' ;5
  2510.  dc.b '     FORWARDS                   UCK     ' ;6
  2511.  dc.b '     BACKWARDS                  DCK     ' ;7
  2512.  dc.b '     FIRE                       RAL     ' ;8
  2513.  dc.b '     OPERATE DOOR/LIFT/SWITCH   SPC     ' ;9
  2514.  dc.b '     RUN                        RSH     ' ;0
  2515.  dc.b '     FORCE SIDESTEP             RAM     ' ;1
  2516.  dc.b '     SIDESTEP LEFT               .      ' ;2
  2517.  dc.b '     SIDESTEP RIGHT              /      ' ;3
  2518.  dc.b '     DUCK                        D      ' ;4
  2519.  dc.b '     LOOK BEHIND                 L      ' ;5
  2520.  dc.b '     JUMP                       KP0     ' ;6
  2521.  dc.b '     LOOK UP                     ]      ' ;7
  2522.  dc.b '     LOOK DOWN                   #      ' ;8
  2523.  dc.b '     CENTRE VIEW                 ;      ' ;9
  2524.  dc.b '     NEXT WEAPON                RET     ' ;9
  2525.  dc.b '                                        ' ;9
  2526.  dc.b '             OTHER CONTROLS             ' ;0
  2527.  dc.b '                                        ' ;1
  2528.  dc.b '1-0   Select Weapon P              Pause' ;2
  2529.  dc.b 'F1   Zoom in on map F3 4/8 Channel Sound' ;3
  2530.  dc.b 'F2  Zoom out on map F4 Mono/Stereo Sound' ;4
  2531.  dc.b 'F5 Recall Message   F6    Render Quality'  
  2532.  dc.b '    Keypad 1-9 scroll map, 5 centres    ' ;5
  2533.  dc.b '                                        ' ;7
  2534.  dc.b '               MAIN  MENU               ' ;8
  2535.  dc.b '                                        ' ;1
  2536.  
  2537. CONTROL_OPTS:
  2538.  dc.w 5,4,30,1
  2539.  dc.w 5,5,30,1
  2540.  dc.w 5,6,30,1
  2541.  dc.w 5,7,30,1
  2542.  dc.w 5,8,30,1
  2543.  dc.w 5,9,30,1
  2544.  dc.w 5,10,30,1
  2545.  dc.w 5,11,30,1
  2546.  dc.w 5,12,30,1
  2547.  dc.w 5,13,30,1
  2548.  dc.w 5,14,30,1
  2549.  dc.w 5,15,30,1
  2550.  dc.w 5,16,30,1
  2551.  dc.w 5,17,30,1
  2552.  dc.w 5,18,30,1
  2553.  dc.w 5,19,30,1
  2554.  dc.w 5,20,30,1
  2555.  dc.w 15,30,10,1
  2556.  dc.w -1
  2557.  
  2558. PLOPT: dc.w 0
  2559.  
  2560. INSTRUCTIONS_TXT:
  2561. ;      0123456789012345678901234567890123456789
  2562.  dc.b 'Main controls:                          ' ;1
  2563.  dc.b '                                        ' ;2
  2564.  dc.b 'Curs Keys = Forward / Backward          ' ;3
  2565.  dc.b '            Turn left / right           ' ;4
  2566.  dc.b '          Right Alt = Fire              ' ;5
  2567.  dc.b '        Right Shift = Run               ' ;6
  2568.  dc.b '                  > = Slide Left        ' ;7
  2569.  dc.b '                  ? = Slide Right       ' ;8
  2570.  dc.b '              SPACE = Operate Door/Lift ' ;9
  2571.  dc.b '                  D = Duck              ' ;0
  2572.  dc.b '                  J = Joystick Control  ' ;1
  2573.  dc.b '                  K = Keyboard Control  ' ;2
  2574.  dc.b '                                        ' ;3
  2575.  dc.b '              1,2,3 = Select weapon     ' ;4
  2576.  dc.b '              ENTER = Toggle screen size' ;5
  2577.  dc.b '                ESC = Quit              ' ;6
  2578.  dc.b '                                        ' ;7
  2579.  dc.b '                                        ' ;8
  2580.  dc.b 'The one player game has no objective and' ;9
  2581.  dc.b 'the only way to finish is to die or quit' ;0
  2582.  dc.b '                                        ' ;1
  2583.  dc.b 'The two-player game is supposed to be a ' ;2
  2584.  dc.b 'fight to the death but will probably be ' ;3
  2585.  dc.b 'a fight-till-we-find-the-rocket-launcher' ;4
  2586.  dc.b 'then-blow-ourselves-up type game.       ' ;5
  2587.  dc.b '                                        ' ;6
  2588.  dc.b 'LOOK OUT FOR TELEPORTERS: They usually  ' ;7
  2589.  dc.b 'have glowing red walls and overhead     ' ;8
  2590.  dc.b 'lights. Useful for getting behind your  ' ;9
  2591.  dc.b ' opponent!                              ' ;0
  2592.  dc.b '  Just a taster of what is to come....  ' ;1
  2593.  dc.b '                                        ' ;0
  2594.  
  2595. INSTRUCTIONS_OPTS:
  2596.  dc.w 0,0,0,1
  2597.  dc.w -1
  2598.  
  2599. CREDITMENU_TXT:
  2600.  
  2601. ;      0123456789012345678901234567890123456789
  2602.  dc.b '    Programming, Game Code, Graphics    ' ;0
  2603.  dc.b '         Game Design and Manual         ' ;1
  2604.  dc.b '            Andrew Clitheroe            ' ;2
  2605.  dc.b '                                        ' ;3
  2606.  dc.b '       Alien and Scenery Graphics       ' ;4
  2607.  dc.b '             Michael  Green             ' ;5
  2608.  dc.b '                                        ' ;6
  2609.  dc.b '           3D Object Designer           ' ;7
  2610.  dc.b '            Charles Blessing            ' ;8
  2611.  dc.b '                                        ' ;9
  2612.  dc.b '              Level Design              ' ;0
  2613.  dc.b 'Jackie Lang   Michael Green  Ben Chanter' ;1
  2614.  dc.b '                                        ' ;3
  2615.  dc.b '                                        ' ;3
  2616.  dc.b '           Creative  Director           ' ;4
  2617.  dc.b '              Martyn Brown              ' ;5
  2618.  dc.b '                                        ' ;6
  2619.  dc.b '       Project Manager and Manual       ' ;7
  2620.  dc.b '          Phil Quirke-Webster           ' ;8
  2621.  dc.b '                                        ' ;9
  2622.  dc.b '                 Music                  ' ;0
  2623.  dc.b '           Ben "666" Chanter            ' ;1
  2624.  dc.b '                                        ' ;2
  2625.  dc.b '      Cover Illustration and Logo       ' ;3
  2626.  dc.b '             Kevin Jenkins              ' ;4
  2627.  dc.b '                                        ' ;5
  2628.  dc.b '      Packaging and Manual Design       ' ;6
  2629.  dc.b '               Paul Sharp               ' ;7
  2630.  dc.b '                                        ' ;8
  2631.  dc.b '             QA and Playtest            ' ;9
  2632.  dc.b '     Too numerous to mention here!      ' ;0
  2633.  dc.b '                                        ' ;1
  2634.  
  2635.  dc.b '    Serial Link and 3D Object Editor:   ' ;4
  2636.  dc.b '                   by                   ' ;5
  2637.  dc.b '            Charles Blessing            ' ;6
  2638.  dc.b '                                        ' ;7
  2639.  dc.b '                Graphics:               ' ;8
  2640.  dc.b '                   by                   ' ;9
  2641.  dc.b '              Mike  Oakley              ' ;0
  2642.  dc.b '                                        ' ;1
  2643.  dc.b '             Title  Picture             ' ;2
  2644.  dc.b '                   by                   ' ;3
  2645.  dc.b '               Mike Green               ' ;4
  2646.  dc.b '                                        ' ;5
  2647.  dc.b ' Inspiration, incentive, moral support, ' ;6
  2648.  dc.b '     level design and plenty of tea     ' ;7
  2649.  dc.b '         generously supplied by         ' ;8
  2650.  dc.b '                                        ' ;9
  2651.  dc.b '              Jackie  Lang              ' ;0
  2652.  dc.b '                                        ' ;1
  2653.  dc.b '    Music for the last demo composed    ' ;2
  2654.  dc.b '       by the inexpressibly evil:       ' ;3
  2655.  dc.b '                                        ' ;8
  2656.  dc.b '            *BAD* BEN CHANTER           ' ;9
  2657.  dc.b '                                        ' ;0
  2658.  dc.b '    Sadly no room for music this time   ' ;1
  2659.  dc.b '                                        ' ;7
  2660.  dc.b '                                        ' ;7
  2661.  
  2662. CREDITMENU_OPTS:
  2663.  dc.w 0,0,1,1
  2664.  dc.w -1
  2665.  
  2666.  
  2667. ;      0123456789012345678901234567890123456789
  2668.  dc.b '                                        ' ;0
  2669.  dc.b '                                        ' ;1
  2670.  dc.b '                                        ' ;2
  2671.  dc.b '                                        ' ;3
  2672.  dc.b '                                        ' ;4
  2673.  dc.b '                                        ' ;5
  2674.  dc.b '                                        ' ;6
  2675.  dc.b '                                        ' ;7
  2676.  dc.b '                                        ' ;8
  2677.  dc.b '                                        ' ;9
  2678.  dc.b '                                        ' ;0
  2679.  dc.b '                                        ' ;1
  2680.  dc.b '                                        ' ;2
  2681.  dc.b '                                        ' ;3
  2682.  dc.b '                                        ' ;4
  2683.  dc.b '                                        ' ;5
  2684.  dc.b '                                        ' ;6
  2685.  dc.b '                                        ' ;7
  2686.  dc.b '                                        ' ;8
  2687.  dc.b '                                        ' ;9
  2688.  dc.b '                                        ' ;0
  2689.  dc.b '                                        ' ;1
  2690.  dc.b '                                        ' ;2
  2691.  dc.b '                                        ' ;3
  2692.  dc.b '                                        ' ;4
  2693.  dc.b '                                        ' ;5
  2694.  dc.b '                                        ' ;6
  2695.  dc.b '                                        ' ;7
  2696.  dc.b '                                        ' ;8
  2697.  dc.b '                                        ' ;9
  2698.  dc.b '                                        ' ;0
  2699.  dc.b '                                        ' ;1
  2700.  
  2701.  
  2702. ********************************************************
  2703.  
  2704. PUTIN32:
  2705.  
  2706.  moveq #0,d2
  2707.  moveq #0,d3
  2708.  moveq #0,d4
  2709.  moveq #0,d5
  2710.  moveq #0,d6
  2711.  moveq #0,d7
  2712.  
  2713.  move.w #31,d2
  2714. p32loop:
  2715.  moveq #0,d5
  2716.  move.l (a0)+,d3
  2717.  move.w d3,d4
  2718.  swap d3
  2719.  move.b d4,d5
  2720.  lsr.w #8,d4
  2721.  
  2722.  muls d0,d3
  2723.  muls d0,d4
  2724.  muls d0,d5
  2725.  lsr.l #8,d3
  2726.  lsr.l #8,d4
  2727.  lsr.l #8,d5
  2728.  move.w d3,d6
  2729.  swap d3
  2730.  move.w d6,d3
  2731.  move.w d4,d6
  2732.  swap d4
  2733.  move.w d6,d4
  2734.  move.w d5,d6
  2735.  swap d5
  2736.  move.w d6,d5
  2737.  and.w #%11110000,d3
  2738.  and.w #%11110000,d4
  2739.  and.w #%11110000,d5
  2740.  lsl.w #4,d3
  2741.  add.w d4,d3
  2742.  lsr.w #4,d5
  2743.  add.w d5,d3
  2744.  move.w d3,2(a1)
  2745.  swap d3
  2746.  swap d4
  2747.  swap d5
  2748.  and.w #%1111,d3
  2749.  and.w #%1111,d4
  2750.  and.w #%1111,d5
  2751.  lsl.w #8,d3
  2752.  lsl.w #4,d4
  2753.  add.w d4,d3
  2754.  add.w d5,d3
  2755.  move.w d3,2+(132*4)(a1)
  2756.  addq #4,a1
  2757.  dbra d2,p32loop
  2758.  
  2759.  
  2760.  rts
  2761.  
  2762. **************************************
  2763.  
  2764. FADEAMOUNT: dc.w 0
  2765. FADEVAL: dc.w 0
  2766.  
  2767. FADEUPTITLE:
  2768.  
  2769.  moveq #0,d0
  2770.  moveq #0,d1
  2771.  move.w FADEVAL,d0
  2772.  move.w FADEAMOUNT,d1
  2773. fadeuploop:
  2774.  
  2775.  move.l #TITLEPAL,a0
  2776.  move.l #TITLEPALCOP,a1
  2777.  
  2778. wvb:
  2779.  btst #5,$dff000+intreqrl
  2780.  beq.s wvb
  2781.  move.w #$20,$dff000+intreq 
  2782.  
  2783.  bsr PUTIN32
  2784.  add.w #4,a1
  2785.  bsr PUTIN32
  2786.  add.w #4,a1
  2787.  bsr PUTIN32
  2788.  add.w #4,a1
  2789.  bsr PUTIN32
  2790.  
  2791.  addq.w #8,d0
  2792.  dbra d1,fadeuploop
  2793.  
  2794.  subq #8,d0
  2795.  move.w d0,FADEVAL
  2796.  
  2797.  rts
  2798.  
  2799. CLEARTITLEPAL:
  2800.  PRSDP
  2801.  move.l #TITLEPALCOP,a0
  2802.  move.w #7,d1
  2803. clrpal:
  2804.  move.w #31,d0
  2805. clr32
  2806.  move.w #0,2(a0)
  2807.  addq #4,a0
  2808.  dbra d0,clr32
  2809.  addq #4,a0
  2810.  dbra d1,clrpal
  2811.  PRSDQ
  2812.  rts
  2813.  
  2814. FADEDOWNTITLE:
  2815.  
  2816.  move.w FADEVAL,d0
  2817.  move.w FADEAMOUNT,d1
  2818. fadedownloop:
  2819.  
  2820.  move.l #TITLEPAL,a0
  2821.  move.l #TITLEPALCOP,a1
  2822.  
  2823. .wvb:
  2824.  btst #5,$dff000+intreqrl
  2825.  beq.s .wvb
  2826.  move.w #$20,$dff000+intreq 
  2827.  
  2828.  bsr PUTIN32
  2829.  add.w #4,a1
  2830.  bsr PUTIN32
  2831.  add.w #4,a1
  2832.  bsr PUTIN32
  2833.  add.w #4,a1
  2834.  bsr PUTIN32
  2835.  
  2836.  subq.w #8,d0
  2837.  dbra d1,fadedownloop
  2838.  
  2839.  addq #8,d0
  2840.  move.w d0,FADEVAL
  2841.  
  2842.  rts
  2843.  
  2844. LOADTITLESCRN2:
  2845.  
  2846.  
  2847.  move.l #MEMF_CLEAR,d1
  2848.  move.l #52400,d0
  2849.  move.l 4.w,a6
  2850.  jsr    _LVOAllocMem(a6)
  2851.  tst.l  d0
  2852.  beq    .nomem
  2853.  
  2854.  move.l d0,tempptr
  2855.  
  2856.  move.l TITLESCRNPTR,d1
  2857.  move.l #1005,d2
  2858.  move.l doslib,a6
  2859.  jsr -30(a6)
  2860.  move.l d0,handle
  2861.  move.l d0,d1
  2862.  move.l doslib,a6
  2863. ; move.l TITLESCRNADDR,d2
  2864.  move.l tempptr,d2
  2865.  move.l #10240*7,d3
  2866.  jsr -42(a6)
  2867.  move.l doslib,a6
  2868.  move.l handle,d1
  2869.  jsr -36(a6)
  2870.  
  2871.     
  2872.  move.l TITLESCRNADDR,a0
  2873.  move.l tempptr,d0
  2874.  
  2875.  moveq #0,d1
  2876.  lea WorkSpace,a1
  2877.  lea $0,a2
  2878.  jsr unLHA
  2879.  
  2880.  move.l tempptr,a1
  2881.  move.l #52400,d0
  2882.  CALLEXEC FreeMem
  2883.   
  2884. .nomem
  2885.  
  2886.  rts
  2887.  
  2888. tempptr dc.l 0
  2889.  
  2890.  
  2891. GETTITLEMEM:
  2892.  move.l #2,d1
  2893.  move.l #10240*7,d0
  2894.  move.l 4.w,a6
  2895.  jsr -198(a6)
  2896.  move.l d0,TITLESCRNADDR
  2897.  
  2898.  move.l #$dff000-$2cdfe4,a4
  2899.  
  2900.  move.l #2,d1
  2901.  move.l #258*16*5,d0
  2902.  move.l 4.w,a6
  2903.  jsr -198(a6)
  2904.  move.l d0,OPTSPRADDR
  2905.  
  2906.  rts
  2907.  
  2908. ProtChkJLev1:
  2909.  
  2910. PROTSETUP:
  2911.  incbin "ab3:includes/protsetupenc"
  2912.  
  2913. ; Need to: Decode protection calling
  2914. ; routine
  2915. ; use null values to call it and erase
  2916. ; it from memory
  2917. ; erase this routine and return.
  2918.  
  2919. ; include "ab3:source/protsetup"
  2920.  
  2921.  
  2922. RELEASETITLEMEM:
  2923.  move.l TITLESCRNADDR,d1
  2924.  move.l d1,a1
  2925.  move.l #10240*7,d0
  2926.  move.l 4.w,a6
  2927.  jsr -210(a6)
  2928.  
  2929.  move.l OPTSPRADDR,d1
  2930.  move.l d1,a1
  2931.  move.l #258*80,d0
  2932.  move.l 4.w,a6
  2933.  jsr -210(a6)
  2934.  rts
  2935.  
  2936.  
  2937. PROTCALLENC:
  2938. ; incbin "ab3:source/protcallenc.bin
  2939.  
  2940. ; one pass, all instructions executed.
  2941. ; must call protection routine,store
  2942. ; value somewhere, call ask routine,
  2943. ; compare returned value, if correct
  2944. ; set up all values, then return.
  2945.  
  2946. ; include "ab3:source_4000/protcallenc"
  2947.  
  2948. ENDPROT:
  2949.  
  2950. LOADTITLESCRN:
  2951.  
  2952.  move.l #TITLESCRNNAME,d1
  2953.  move.l #1005,d2
  2954.  move.l doslib,a6
  2955.  jsr -30(a6)
  2956.  move.l d0,handle
  2957.  move.l d0,d1
  2958.  move.l doslib,a6
  2959.  move.l TITLESCRNADDR,d2
  2960.  move.l #10240*7,d3
  2961.  jsr -42(a6)
  2962.  move.l doslib,a6
  2963.  move.l handle,d1
  2964.  jsr -36(a6)
  2965.  
  2966.  rts
  2967.  
  2968. RVAL2: dc.w 0
  2969.  
  2970. SETUPTITLESCRN:
  2971.  
  2972.  PRSDR
  2973.  move.l #OPTCOP,a0
  2974.  move.l #rain,a1
  2975.  move.w #255,d0
  2976. putinrain:
  2977.  move.w (a1)+,d1
  2978.  move.w d1,6(a0)
  2979.  move.w d1,6+4(a0)
  2980.  move.w d1,6+8(a0)
  2981.  move.w d1,6+12(a0)
  2982.  add.w #4*14,a0
  2983.  
  2984.  dbra d0,putinrain
  2985.  
  2986. ; Put addr into copper.
  2987.  move.l OPTSPRADDR,d0
  2988.  move.w d0,tsp0l
  2989.  swap d0
  2990.  move.w d0,tsp0h
  2991.  swap d0
  2992.  add.l #258*16,d0
  2993.  move.w d0,tsp1l
  2994.  swap d0
  2995.  move.w d0,tsp1h
  2996.  swap d0
  2997.  add.l #258*16,d0
  2998.  move.w d0,tsp2l
  2999.  swap d0
  3000.  move.w d0,tsp2h
  3001.  swap d0
  3002.  add.l #258*16,d0
  3003.  move.w d0,tsp3l
  3004.  swap d0
  3005.  move.w d0,tsp3h
  3006.  swap d0
  3007.  add.l #258*16,d0
  3008.  move.w d0,tsp4l
  3009.  swap d0
  3010.  move.w d0,tsp4h
  3011.  
  3012.  move.l #nullspr,d0
  3013.  move.w d0,tsp5l
  3014.  move.w d0,tsp6l
  3015.  move.w d0,tsp7l
  3016.  swap d0
  3017.  move.w d0,tsp5h
  3018.  move.w d0,tsp6h
  3019.  move.w d0,tsp7h 
  3020.  
  3021.  move.l TITLESCRNADDR,d0
  3022.  move.w d0,ts1l
  3023.  swap d0
  3024.  move.w d0,ts1h
  3025.  swap d0
  3026.  add.l #10240,d0
  3027.  move.w d0,ts2l
  3028.  swap d0
  3029.  move.w d0,ts2h
  3030.  swap d0
  3031.  add.l #10240,d0
  3032.  move.w d0,ts3l
  3033.  swap d0
  3034.  move.w d0,ts3h
  3035.  swap d0
  3036.  add.l #10240,d0
  3037.  move.w d0,ts4l
  3038.  swap d0
  3039.  move.w d0,ts4h
  3040.  swap d0
  3041.  add.l #10240,d0
  3042.  move.w d0,ts5l
  3043.  swap d0
  3044.  move.w d0,ts5h
  3045.  swap d0
  3046.  add.l #10240,d0
  3047.  move.w d0,ts6l
  3048.  swap d0
  3049.  move.w d0,ts6h
  3050.  swap d0
  3051.  add.l #10240,d0
  3052.  move.w d0,ts7l
  3053.  swap d0
  3054.  move.w d0,ts7h
  3055.  rts 
  3056.  
  3057. RVAL1: dc.w 0
  3058.  
  3059. DummyAdds:
  3060.  dc.l dummy-78935450
  3061.  dc.l dummy-78935450
  3062.  dc.l dummy-78935450
  3063.  dc.l dummy-78935450
  3064.  dc.l dummy-78935450
  3065.  dc.l dummy-78935450
  3066.  dc.l dummy-78935450
  3067.  dc.l dummy-78935450
  3068.  dc.l dummy-78935450
  3069.  dc.l dummy-78935450
  3070.  
  3071. LEVELTEXTNAME: dc.b 'TKG1:includes/TEXT_FILE'
  3072.  
  3073.  even
  3074.  
  3075. LEVELTEXT:
  3076.  dc.l 0
  3077.  
  3078. dummycall
  3079.  dc.w $4e75-123
  3080.  
  3081. protspace: 
  3082.  ds.l 200
  3083.  
  3084. ; include "ab3:source_4000/LEVEL_BLURB"
  3085.  
  3086. font:
  3087.  incbin "Starquake.font.bin"
  3088.  
  3089. rain: incbin "optcop"
  3090.  
  3091.     include "ab3:demo/menu/menunb.s"